Re: [firebase-br] Extrema Lentidão em Consulta Fire bird 5
"Carlos H. Cantu via lista" <[email protected]> Wed, 14 May 2025 20:47:50 -0300
| Newsgroups | gmane.comp.db.firebase.portuguese |
|---|---|
| Organization | WarmBoot Informatica - FireBase |
| Message-ID | <[email protected]> |
A primeira coisa é vc analisar o PLAN gerado pela consulta, e a partir dele tentar otimizar. PS: Dependendo dos casos, o uso de CTEs pode ficar extremamente lento (especialmente quando há funções de agregação nelas). Em último caso, transforme tudo em um execute block com multiplos selects dentro do loop principal. []s Carlos H. Cantu eBook Guia de Migração para o FB 5 - www.firebase.com.br/guiafb5.php www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br Lfvl> Esses dois SQL chegam a demorar 15 minutos e 30 minutoscom os mesmo Lfvl> índices e registros no PostgreSQL é 15 segundos. Lfvl> Percebo extrema lentidão no firebird desde a versão 3 o tempo passou Lfvl> estamos na versão 5 e nada mudoumeu sistema consegue trabalhar com dois Lfvl> banco de dados Firebird ou Postgres porém tenho vários clientes com Lfvl> Firebird que eu não queria mudar para postgres pois se trata de um Lfvl> processo complexo onde tenho que instalar uma ferramenta de conversão de Lfvl> dados no cliente para fazer a migração. Lfvl> Como eu poderia fazer para enviar o banco de dados de produção para os Lfvl> criadores do Firebird pois eu já tentei de todas as formas e não sei mais Lfvl> como otimizar acredito ser limitação do Firebird. Lfvl> WITH CADASTRO_PRECO As ( SelectGP.COD_PRODUTO, Lfvl> GP.DESCRICAO,GP.INATIVO,GP.FILIAL, GP.ID_PRECO From Cadastro_Precos Lfvl> GPInner Join CADASTRO_MERCADORIAS CM On ( CM.Codigo = GP.Cod_Produto ) Lfvl> Where ( GP.INATIVO is Null Or GP.INATIVO = '' Or GP.INATIVO = 'N' ) ) Lfvl> ,Soma_Estoque_1 As ( Select E.Cod_Mercadoria, Sum(E.Quant) Saldo_Tipo Lfvl> From Estoque E Inner Join CADASTRO_TIPO_MERCADORIAS CTP On ( CTP.Codigo = Lfvl> E.Cod_Aplicacao ) Where (E.Lixo <> 'S' Or E.Lixo is Null Or E.Lixo = '') Lfvl> And ( E.Arquivo <> 'S' Or E.Arquivo is Null Or E.Arquivo = '' ) And Lfvl> E.data_emissao >= '01.12.2024' Group By E.Cod_Mercadoria ) Lfvl> SELECT Lfvl> CAD.MERCADORIA,GP.Descricao,CAD.Codigo,ST1.Saldo_Tipo,Sum(REL.Quant) Saldo_Total Lfvl> FROM CADASTRO_MERCADORIAS CAD Lfvl> left Join ESTOQUE REL ON (REL.Cod_Mercadoria = CAD.codigo)left join Lfvl> CADASTRO_PESSOAS CF on (CF.Codigo = CAD.cod_fornecedor )left join Lfvl> Cadastro_Preco GP ON (GP.cod_produto = REL.Cod_Mercadoria And GP.ID_Preco Lfvl> = REL.ID_Preco )Left Join Soma_Estoque_1 ST1 on (ST1.Cod_Mercadoria = REL.Cod_Mercadoria ) Lfvl> Group By 1, 2, 3, 4 Lfvl> //---------------------------------------------------------------------------------------------------------------------------------------------- Lfvl> SELECTE.COD_MERCADORIA,E.Mercadoria,E.data_emissao,SUM(E.Quant), Lfvl> ( Select Coalesce(Sum(Coalesce(ES.Quant, 0)), 0) From ESTOQUE ES Where Lfvl> (ES.Lixo <> 'S' Or ES.Lixo is Null Or ES.Lixo = '') And ( ES.Arquivo <> Lfvl> 'S' Or ES.Arquivo is Null Or ES.Arquivo = '' ) And ES.Cod_Mercadoria = Lfvl> E.Cod_Mercadoria And ES.data_emissao <= E.data_emissao And (( ES.FILIAL Lfvl> = 0 Or ES.FILIAL Is Null ) OR ES.FILIAL = 1 ) ) As SALDO_DIARIO Lfvl> FROM ESTOQUE E INNER Join CADASTRO_MERCADORIAS CM on (CM.Codigo = E.COD_MERCADORIA ) Lfvl> Where (E.Lixo <> 'S' Or E.Lixo is Null Or E.Lixo = '')And ( E.Arquivo <> Lfvl> 'S' Or E.Arquivo is Null Or E.Arquivo = '' ) And ( (( CM.Estoque_Filial is Lfvl> Not Null And CM.Estoque_Filial <> 0 ) And (CM.Estoque_Filial = E.Filial) Lfvl> And E.Filial = 1 ) Or( CM.Estoque_Filial is Null Or CM.Estoque_Filial = 0 ) ) Lfvl> Group By 1, 2, 3Having SUM(E.Quant) <> 0Order By E.COD_MERCADORIA, E.Data_Emissao Desc Lfvl> ______________________________________________ Lfvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Lfvl> Para saber como gerenciar/excluir seu cadastro na lista, use: Lfvl> http://www.firebase.com.br/fb/artigo.php?id=1107 Lfvl> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html ______________________________________________ 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