Re: [firebase-br] Extrema Lentidão em Consulta Firebi rd 5

Rodrigo Gomes da Silva via lista <[email protected]> Fri, 16 May 2025 18:40:02 -0300
Newsgroups gmane.comp.db.firebase.portuguese
Message-ID <CAJ2k39AQ=-EEH_BgHhdaanr4mNb8yXFaA9s6ZTr11SLLek8WNw@mail.gmail.com>
E uma outra coisa ... se você tem cada entrada de estoque gera um registro
em estoque, e vai tendo a saida até a Quant estar zerada, compensa vc
ignorar esses registros sempre que for processar algo de estoque sobrando,
criando um índice tipo Cod_Mercadoria+Quant e fazer
  LEFT JOIN Soma_Estoque_1 ST1 ON ST1.Cod_Mercadoria = REL.Cod_Mercadoria
and ST1.Quant>0

Assim ele pula os registros sem estoque (que deve ser a maioria pra cada
produto) direto no filtro ao invés de ficar lento todos eles pra somar 0

On Fri, May 16, 2025 at 5:39 PM Luciano franca <[email protected]>
wrote:

> Eu Fiz apenas um exemplo basico onde dois "LEFT Join" causam extrema
> lentidão no Firebird meu SQL completo.
> Veja esse topico para entender melhor
>
> https://github.com/FirebirdSQL/firebird/issues/8568
>
>
>
>
>
>
> Em sexta-feira, 16 de maio de 2025 às 15:48:49 BRT, Rodrigo Gomes da Silva
> <[email protected]> escreveu:
>
>
> SELECT
> CM.Codigo,
> CM.MERCADORIA,
> Sum(E.quant) As Saldo,
> AVG(E2.preco_custo) As Preco
> FROM CADASTRO_MERCADORIAS CM
> left Join ESTOQUE E ON (E.Cod_Mercadoria = CM.codigo)
> left Join ESTOQUE E2 ON ( E2.Cod_Mercadoria = CM.Codigo )
> Group By 1, 2
>
> Você quer o preço medio e a quantidade, por que esta fazendo 2 joins para
> o mesmo filtro? Os registros são multiplicados.
>
> SELECT
> CM.Codigo,
> CM.MERCADORIA,
> Sum(E.quant) As Saldo,
> AVG(E.preco_custo) As Preco
>
> FROM CADASTRO_MERCADORIAS CM
> left Join ESTOQUE E ON (E.Cod_Mercadoria = CM.codigo)
> Group By 1, 2
>
>
> Aparentemente bastaria fazer isso.
>
______________________________________________
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