[firebase-br] Consulta SQL Muito Lenta aparente ser BUG do Firebird.

Luciano franca luapfirebird em yahoo.com.br
Seg Mar 26 10:51:43 -03 2018


 Sim o colega entendeu certo.
Eu tenho duas tabelas  
1º  Cadastro de Cliente  essa tabela tem 11.000 registro
2º  Divida dos clientes  tabela com 98.000 registros  cada cliente pode ter mais de uma nota como divida 
Dessa forma eu preciso mostrar todos os clientes tendo ou não divida  porém aqueles que tem divida deve ser mostrado.isso demora cerca de 9 segundos para carregar 
Usando a SP demorou muito mais por parece não usar índices o tempo com a SP foi de 39 Segundoseu tirei o Distinct da SP e recopilei todos os indices

O Tempo com o Código abaixo foi de 8 Segundos.
SELECT
CC.CODIGO,CC.CLIENTE,TL.*
FROM CADASTRO_PESSOAS CC Left Join CADASTRO_GRUPO_PESSOAS CGC On (CGC.Codigo = CC.Cod_Grupo )
Left Join (
SELECT
VE.CODIGO_CLIENTE, MAX(VE.DATA_EMISSAO) as ULT_DATA_COMPRA
FROM VENDA_CLIENTE VE Inner Join CONDICOES_PAGTO_CLIEN CON on ( CON.N_PEDIDO = VE.NUMERO_PEDIDO And CON.Cod_Funcionario = VE.Cod_Funcionario )Where (VE.Lixo <> 'S' Or VE.Lixo is Null Or VE.Lixo = '')GROUP BY VE.CODIGO_CLIENTE

) TL on (TL.Codigo_Cliente = CC.Codigo)
Order by cc.codigo


    Em segunda-feira, 26 de março de 2018 08:47:22 BRT, Giovani Saccomori <gigioh4 em gmail.com> escreveu:  
 
 Amigo, talvez entendi mal seu sql (ou talvez seja só um exemplo) mas vc
está criando a procedure com 4 campos, dando select só nos dois primeiros e
pedindo pra retornar só os dois últimos? Isso está rodando e trazendo
resultado?
O uso de distinct também contribui para a lentidão, viu.

Se entendi mal, me perdoe.

Abraço!

2018-03-24 15:10 GMT-04:00 Guilherme <guilherme em rplus.com.br>:

> Tenta criar / recompilar os índex dos Campos usados no select
>
> Enviado via iPhone
>
> Em 24 de mar de 2018, à(s) 14:25, Luciano franca <
> luapfirebird em yahoo.com.br> escreveu:
>
> >    Amigo acabei de fazer a SP porém por incrível que parece o tempo é
> mesmo se usar o comando SQL sem SP nada mudou em termos de desempenho
> > para minha tristeza,  continua nos 10 Segundos para carregar cerca de
> 12.000 Registros
> > Veja o código com SP
> > create or alter procedure DIVIDA_CLIENTESreturns (    COD_CLIENTE type
> of "Codigo_AlfaNum",    NOME_CLIENTE type of "AlfaNumerico_150",
> DATA_ULTCOMPRA date,    VALOR_DIVIDA type of "Valores")asBegin
> >  For SELECT Distinct
> >  CC.CODIGO, CC.CLIENTE
> >  FROM CADASTRO_PESSOAS CC Into :Cod_Cliente, Nome_Cliente do Begin
> >  SELECT  MAX(VE.DATA_EMISSAO) as ULT_DATA_COMPRA,
> SUM(CON.valor_parcela) as Valor_Parcela
> >  FROM VENDA_CLIENTE VE  Inner Join CONDICOES_PAGTO_CLIEN CON on (
> CON.N_PEDIDO = VE.NUMERO_PEDIDO )  Where VE.Codigo_cliente = :Cod_Cliente
> >  Into :Data_UltCompra, :Valor_Divida;
> >  Suspend; End
> > end
> >
> >
> >
> > Comando Anterior
> >
> > SELECT Distinct
> > CC.CODIGO,CC.CLIENTE,TL.*
> > FROM CADASTRO_PESSOAS CC Left Join CADASTRO_GRUPO_PESSOAS CGC On
> (CGC.Codigo = CC.Cod_Grupo )
> > Left Join (
> > SELECT
> > VE.CODIGO_CLIENTE, MAX(VE.DATA_EMISSAO) as ULT_DATA_COMPRA
> > FROM VENDA_CLIENTE VE Inner Join CONDICOES_PAGTO_CLIEN CON on (
> CON.N_PEDIDO = VE.NUMERO_PEDIDO )GROUP BY VE.CODIGO_CLIENTE
> > ) TL on (TL.Codigo_Cliente = CC.Codigo)
> > order by cc.codigo
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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
>
>
> ______________________________________________
> 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
>
______________________________________________
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