[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