[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