[firebase-br] query bastante lenta

Sergio Nascimento sergiojampapb em gmail.com
Seg Jul 23 07:35:19 -03 2012


Pessoal,

Estou com esta query que está demorando cerca de 3 horas:

SELECT prod.COD_CONT, PIS_ALIQUOTA, coalesce(SUM(NSI.NFE_VLR_TOTAL),0) AS
VL_TOT_REC, coalesce(SUM(iif(NSI.PIS_ALIQUOTA=0,0,NSI.PIS_BC)),0) AS
VL_BC_PIS, coalesce(SUM(NSI.PIS_VALOR),0) AS VL_CRED FROM NF_SAIDAS_ITENS
NSI
JOIN NF_SAIDAS NS ON (NSI.EMP_CODIGO = NS.EMP_CODIGO AND
NSI.ESPECIE_DOCUMENTO = NS.ESPECIE_DOCUMENTO AND NSI.NUMERO_DOCUMENTO =
NS.NUMERO_DOCUMENTO)
JOIN PRODUTOS  PROD ON (NSI.EMP_CODIGO = PROD.EMP_CODIGO AND
NSI.PROD_CODIGO = PROD.PROD_CODIGO)
WHERE NSI.EMP_CODIGO = 1 and NS.DATA_DOCUMENTO between '2012-01-01' and
'2012-01-31'
GROUP BY prod.COD_CONT, PIS_ALIQUOTA

Acontece que está damorando tanto por causa do join na tabela NS.
Fiz backup/restore no banco antes de executar.
A tabela NS tem 89.420 registros e a tabela NSI tem 94.769 registros (logo
nao sao tao grandes)
se eu tirar o teste da DATA_DOCUMENTO do WHERE nao demora nem 1 segundo.

Vi uma sugestao aqui de se colocar um sub-select para nao usar o join, mas
era em uma consulta simples, nao em uma com SUM e GROUPY BY.

Alguém pode ajudar ?



Mais detalhes sobre a lista de discussão lista