[firebase-br] Ajuda com select

Mário Reis mariodosreyx em gmail.com
Sexta Março 19 14:26:24 -03 2021


Com "Left Join" não tem hipóteses. Nem com um "AS400/OS400 da IBM" V.
conseguiria melhor performance, quanto mais com um PC por muito potente que
seja!???!
Ainda assim, experimente a criar uma tabela temporária em vez do left join.
Vá partindo o "grande problema" em problemas mais pequenos.
Meta tudo numa "StoreProcedure", preparada para receber os parâmetros do
Querie de input e de output, onde retorne apenas os campos que V. necessita.
Estou certo que será infinitamente mais rápido que o uso de "Left
Join"; por vezes chega a ser um pesadelo. Espero ter ajudado
Abraço
Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.
[image: cloudHQ] <https://www.free-email-tracker.com> Powered by
cloudHQ <https://www.free-email-tracker.com>


rodrigo via lista <lista em firebase.com.br> escreveu no dia terça, 16/03/2021
à(s) 22:36:

> Boa noite!
>
> Tenho um select cujas tabelas
> Itensfat tem mais de 1.500.000 registros
> Pedidosfat mais de 400.000 registros
> E clientes mais de 80.000 registros
>
> Tenho esse select
>
> SELECT COUNT(I.ID) FROM itensfat i
> LEFT JOIN pedidosfat p ON (P.CODIGO = I.CODIGO and I.ID_EMPRESA='114028')
> LEFT JOIN CLIENTES AS TB ON (TB.CODCLIENTE = P.NUMCLIENTE and
> TB.ID_EMPRESA='114028' )
> WHERE P.ID_EMPRESA='114028' AND TB.CODVENDEDOR = 2 AND I.ID_ATUALIZA>0
>
> Com esse retorno:
>
> PLAN JOIN (JOIN (I INDEX (ITENSFAT_ID_ATUALIZA), P INDEX
> (PEDIDOSFAT_CODIGO, PEDIDOSFAT_ID_EMPRESA)), TB INDEX
> (IDX_CLIENTES_CODCLIENTE, IDX_CLIENTES_IDEMPRESA))
>
> Prepare: 47 ms  Execute: 50 s 157 ms  Fetch: 50 s 157 ms
>
> Se altero para
> SELECT COUNT(I.ID) FROM pedidosfat p
> LEFT JOIN itensfat i ON (P.CODIGO = I.CODIGO and I.ID_EMPRESA='114028')
> LEFT JOIN CLIENTES AS TB ON (TB.CODCLIENTE = P.NUMCLIENTE and
> TB.ID_EMPRESA='114028' )
> WHERE P.ID_EMPRESA='114028' AND TB.CODVENDEDOR = 2 AND I.ID_ATUALIZA>0
>
> Demora mais de 7 minutos
>
> Alguem tem alguma dica de como posso melhorar a performance desse select?
>
> Grato
>
>
> --
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista