[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