[firebase-br] Ajuda em SELECT
Sergio Nascimento
sergiojampapb em gmail.com
Qua Out 27 14:57:01 -03 2010
Obrigado pela resposta,
Mas eu recriei o FK entre as tabelas NS e NSI e não "resolveu", daí reniciei
o computador e dutou apenas 655 ms (isto mesmo MILISEGUNDOS) - o
FB/computador estavam "malucos".
Muito obrigado pela atenção.
Vou seguir a dica do between.
2010/10/27 Carlos H. Cantu <listas em warmboot.com.br>
> Vc vai ter que analisar o PLAN desse select, e ver se o Firebird está
> usando os índices corretos quando possível.
>
> De antemão, eu substituiria:
>
> (EXTRACT(YEAR FROM NS.DATA_DOCUMENTO) = 2010) AND
> (EXTRACT(MONTH FROM NS.DATA_DOCUMENTO) = 1) AND
>
> por
>
> ns.datadocumento between '1.1.2010' and '31.1.2010'
>
> e me certificaria que existe um indice criado para esse campo.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br <http://www.firebase.com.br/> - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>
> SN> Pessoal,
>
> SN> Este select abaixo está demorando 19 min (isto mesmo MINUTOS)
>
> SN> SELECT NSI.ESPECIE_DOCUMENTO, NSI.SERIE_SUBSERIE, NSI.NUMERO_DOCUMENTO,
> SN> NS.CLI_CODIGO, NSI.CFOP_CODIGO, NSI.ICMS_ALIQUOTA, NSI.CST_CODIGO,
> SN> CLI.CLI_CNPJ, CLI.CLI_IE, NS.DATA_DOCUMENTO, CMB.UF_CODIGO,
> SN> EDF.ESPECIE_DOC_FISC_SINTEGRA,
> SN> SUM(NSI.NFE_BC_ICMS) AS BC_ICMS, SUM(NSI.NFE_VLR_ICMS) AS
> SN> VLR_ICMS, SUM(NSI.NFE_BC_ICMS_ST) AS BC_ICMS_ST,
> SN> SUM(NSI.NF_VLR_ICMS_ST) AS VLR_ICMS_ST, SUM(NSI.NFE_VLR_IPI) AS
> SN> VLR_IPI, SUM(NSI.NFE_VLR_TOTAL) AS VALOR_MERC,
> SN> SUM(NSI.NFE_VLR_FRETE) AS VALOR_FRETE, SUM(NSI.NFE_VLR_SEGURO) AS
> SN> VALOR_SEGURO, SUM(NSI.NFE_VLR_ODA) AS VLR_ODA,
> SN> SUM(NSI.NFE_VALOR_REDUCAO_BC) AS RED_BC
> SN> FROM NF_SAIDAS_ITENS NSI
> SN> JOIN NF_SAIDAS NS ON (NSI.EMP_CODIGO = NS.EMP_CODIGO AND
> SN> NSI.ESPECIE_DOCUMENTO = NS.ESPECIE_DOCUMENTO AND NSI.SERIE_SUBSERIE =
> SN> NS.SERIE_SUBSERIE AND NSI.NUMERO_DOCUMENTO = NS.NUMERO_DOCUMENTO)
> SN> JOIN CLIENTES CLI ON (NS.CLI_CODIGO = CLI.CLI_CODIGO)
> SN> JOIN ESPECIES_DOCUMENTOS_FISCAIS EDF ON (EDF.ESPECIE_DOCUMENTO =
> SN> NSI.ESPECIE_DOCUMENTO)
> SN> JOIN CMB ON (CLI.CMB_CODIGO = CMB.CMB_CODIGO)
> SN> WHERE (NSI.EMP_CODIGO = 1) AND
> SN> (EXTRACT(YEAR FROM NS.DATA_DOCUMENTO) = 2010) AND
> SN> (EXTRACT(MONTH FROM NS.DATA_DOCUMENTO) = 1) AND
> SN> (NSI.ESPECIE_DOCUMENTO NOT IN ('CTR ', 'CTRC ', 'NFCEE', 'NFCFGC',
> SN> 'NFCFAC'))
> SN> GROUP BY NSI.ESPECIE_DOCUMENTO, NSI.SERIE_SUBSERIE,
> NSI.NUMERO_DOCUMENTO,
> SN> NS.CLI_CODIGO, NSI.CFOP_CODIGO, NSI.ICMS_ALIQUOTA, CST_CODIGO,
> CLI.CLI_CNPJ,
> SN> CLI.CLI_IE, NS.DATA_DOCUMENTO, CMB.UF_CODIGO,
> EDF.ESPECIE_DOC_FISC_SINTEGRA
>
> SN> O total de registros nas tabelas é de:
> SN> - NSI 33.923
> SN> - NS 17.976
> SN> - CLI 5.219
> SN> - EDF 27
> SN> - CMB 5.566
>
> SN> (o retorno do select é de aproximadamente 1.000 registros):
>
> SN> São poucos como podem ver. Alguém tem como me 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
>
--
Atenciosamente,
Sérgio Ricardo
Mais detalhes sobre a lista de discussão lista