[firebase-br] query bastante lenta

Washington Tavares washingtontavares em gmail.com
Seg Jul 23 08:20:13 -03 2012


* Criar uma view do select e aplicar o Where na View
* Criar um Indice na Tabela de NF_SAIDAS baseado no Join

Em 23 de julho de 2012 07:35, Sergio Nascimento
<sergiojampapb em gmail.com>escreveu:

> 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 ?
> ______________________________________________
> 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
>



-- 
Washington Tavares
84 9188 3135(tim)
tawaresw em hotmail.com
tawaresw em yahoo.com
Skype: washington_tavares



Mais detalhes sobre a lista de discussão lista