[firebase-br] Desempenho com COUNT

Kleber Caneva kdcc em terra.com.br
Qua Jan 7 10:21:22 -03 2009


Uma solução seria vc seprara esses Selects qm 2 querys.

Outra solução, caso não queira alterar muito o programa seria usar o EXECUTE 
BLOCK

EXECUTE BLOCK
RETURNS (
  ID_CLIENTE INTEGER,
  NOME_CLIENTE VARCHAR(60),
  NUMROWS INTEGER)
AS
BEGIN
  SELECT COUNT( 1 )
  FROM CLIENTES
  INTO :NUMROWS ;

  FOR
    SELECT ID_CLIENTE, NOME_CLIENTE
    FROM CLIENTES
    GROUP BY ID_CLIENTE, NOME_CLIENTE
    INTO :ID_CLIENTE, :NOME_CLIENTE
  DO
    SUSPEND;
END

[]´s

Kléber Caneva

----- Original Message ----- 
From: "Marcelo Geyer" <estanisgeyer em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, January 06, 2009 5:58 PM
Subject: [firebase-br] Desempenho com COUNT


Boa tarde,

A pergunta é simples mas fiquei apavorado com a performance. Tenho um
cadastro com 1300 registros.
Ao fazer o SQL abaixo (exemplo) com subselect:

SELECT ID_CLIENTE, NOME_CLIENTE,
(SELECT COUNT( 1 ) FROM CLIENTES) AS NUMROWS
FROM CLIENTES
GROUP BY ID_CLIENTE, NOME_CLIENTE

Este SQL leva de 3 a 4 segundos para me retornar as informações. Se faço
independente, leva menos de 1 segundo. Como eu poderia otimizar SQL com este
tipo de estrutura? Imagino que o culpado aqui é o subselect que a cada
registro é recalculado.
A pergunta é simples mas bem oportuna, vejam como um subselect com count
pode comprometer a aplicação.

Att.

Marcelo E. Geyer.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, visite
http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NDU0NzM0I3Blcm0hdGVycmEmMSwxMjMxMjc1NTYyLjk1NTI4OC4xNjI3OS5ib3ByZS50ZXJyYS5jb20sNDY3Mw==
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.






Mais detalhes sobre a lista de discussão lista