[firebase-br] RES: RES: RES: RES: Ajuda com select

rodrigo firebase em dominioinf.com.br
Quarta Março 17 17:49:14 -03 2021


Não, é inteiro, vou tentar colocar como inteiro vamos ver


Enviado do Email para Windows 10

De: Éder Monteiro do Nascimento via lista
Enviado:quarta-feira, 17 de março de 2021 17:41
Para: Carlos H. Cantu; FireBase
Cc:Éder Monteiro do Nascimento
Assunto: Re: [firebase-br] RES: RES: RES: Ajuda com select

Teu campo (P.ID_EMPRESA = '114028' ) é realmente uma String?
Tá fazendo uma chave com String?
Ou tá fazendo comparativo entre tipos?
Converte essa campo para INT ou Bigint, e roda novamente.





*Éder Monteiro do Nascimento*

Programador

Fator Sistemas & Consultoria

e-mail: *eder.nascimento_fator em hotmail.com <eder.nascimento em hotmail.com>*

http://fatorsistemas.com.br


Em qua., 17 de mar. de 2021 às 16:34, Carlos H. Cantu via lista <
lista em firebase.com.br> escreveu:

> Vc recalculou as estatisticas dos indices depois de importar os
> dados?
>
> Outra coisa:
>
> 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
>
> Você tem condições no WHERE em cima de campos da tabela
> P e TB, portanto, não faz sentido usar LEFT JOIN nesses casos.
>
> Experimente:
>
> SELECT COUNT(I.ID)
> FROM itensfat i
> JOIN pedidosfat p ON (P.CODIGO = I.CODIGO and I.ID_EMPRESA=P.ID_EMPRESA)
> JOIN CLIENTES AS TB ON (TB.CODCLIENTE = P.NUMCLIENTE and
> TB.ID_EMPRESA=P.ID_EMPRESA)
> WHERE P.ID_EMPRESA = '114028' AND TB.CODVENDEDOR = 2 AND I.ID_ATUALIZA>0
>
> e responda mostrando o tempo que demorou e qual foi o PLAN gerado. Não
> esqueça de recalcular as estatisticas dos indices antes de testar.
>
> PS: O count do Firebird é mais lento "por natureza", pois o FB usa a
> arquitetura de Versioning, o que obriga o "count" a visitar todos os
> registros encontrados pra saber se eles estão ou não visíveis para a
> transação associada ao select.
>
>
> []s
> Carlos H. Cantu
> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>
> rvl> Boa tarde,
>
> rvl> Puxei essa tabela do mysql, que esta online, e converti ela em
> rvl> firebird para ficar em meu servidor.
>
> rvl> O dados foram recém importados.
>
> rvl> Tem índice em todos os campos.
>
> rvl> "P.CODIGO = I.CODIGO and I.ID_EMPRESA='114028'  não consegui
> rvl> identificar o erro aqui, a chave estrangeira é o P.CODIGO.
>
> rvl> Pior que no servidor online com mysql esta rodando esse mesmo
> rvl> sql sem índice nenhum criado com 1 segundo.
>
> rvl> Grato
>
>
>
> rvl> Enviado do Email para Windows 10
>
> rvl> De: SERGIO LOPES via lista
> rvl> Enviado:quarta-feira, 17 de março de 2021 15:34
> rvl> Para: Odir Rodrigues de Oliveira via lista
> rvl> Cc:SERGIO LOPES
> rvl> Assunto: Re: [firebase-br] RES: RES: Ajuda com select
>
> rvl>  Boa tarde,não sei se entendi muito bem mas...
> rvl> o problema nao esta aqui "P.CODIGO = I.CODIGO and
> rvl> I.ID_EMPRESA='114028'  "?  veja q nessa estrutura deveria ter uma
> rvl> chave estrangeira para pedidofat de forma q iria consultar apenas
> rvl> itens desse de cada pedido especificamente e da forma q está cada
> rvl> pedido esta comparando com todos os registros da tabela itensfat...
> rvl> penso q deveria sera p.codigo = i."chave_estrangeira_pedidofat" and ..
> rvl> I.ID_EMPRESA='114028' esta parte aqui poderia ser considerado
> rvl> redundante ?? pq a empresa nao ja identifica no pedidofat?
>
> rvl> é isso ou estou enganado... a questão dos indices devem ser levando
> em consideração claro.
> rvl> espero ter ajudado.
>
> rvl>     Em quarta-feira, 17 de março de 2021 14:29:01 BRT, Odir
> rvl> Rodrigues de Oliveira via lista <lista em firebase.com.br> escreveu:
> rvl>
> rvl>  Nas suas tabelas existem Índices para os campos CODVENDEDOR e
> ID_ATUALIZA?
> rvl> Caso negativo experimente criar.
>
> rvl> Odir Rodrigues de Oliveira
> rvl> Clipp-net Informática
> rvl> São Carlos - SP
> rvl> Fone: +55 16 3307-7369
> rvl> Cel: +55 16 98137-2103
> rvl> Site: www.clippnet.com.br
>
>
> rvl> -----Mensagem original-----
> rvl> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Gustavo
> Novaes
> rvl> via lista
> rvl> Enviada em: quarta-feira, 17 de março de 2021 08:35
> rvl> Para: FireBase
> rvl> Cc: Gustavo Novaes
> rvl> Assunto: Re: [firebase-br] RES: Ajuda com select
>
> rvl> Manda a estrutura das tabelas pra gente conhecer melhor. Talvez o uso
> de
> rvl> CTE ajude. Ontem assisti uns vídeos no youtube de um cara chamado
> Edson
> rvl> Gregório. Num deles falava sobre performance.
>
> rvl> *Gustavo Novaes *
>
>
>
>
> rvl> Em qua., 17 de mar. de 2021 às 08:27, rodrigo via lista <
> rvl> lista em firebase.com.br> escreveu:
>
> >> Bom dia Gustavo. Obrigado pela resposta,
> >>
> >> Mesmo resultado.
> >>
> >>
> >>
> >> Enviado do Email para Windows 10
> >>
> >> De: Gustavo Novaes via lista
> >> Enviado:quarta-feira, 17 de março de 2021 08:04
> >> Para: FireBase
> >> Cc:Gustavo Novaes
> >> Assunto: Re: [firebase-br] Ajuda com select
> >>
> >> Bom dia,
> >> Minha sugestão, embora não tenha testado.
> >>
> >> SELECT COUNT(I.ID <http://i.id/>) FROM ITENSFAT ITENS
> >> INNER JOIN PEDIDOSFAT PEDIDOS ON (PEDIDOS..CODIGO = ITENS.CODIGO and
> >> ITENS.ID_EMPRESA='114028')
> >> INNER JOIN CLIENTES AS CLIENTES ON (CLIENTES.CODCLIENTE =
> >> PEDIDOS.NUMCLIENTE AND CLIENTES.CODVENDEDOR = 2)  and
> >> TB.ID_EMPRESA='114028'
> >> )
> >> WHERE PEDIDOS.ID_EMPRESA='114028' AND AND ITENS.ID_ATUALIZA>0
> >>
> >> Gosto do uso de CTEs mas não domino ainda.
> >>
> >> *Gustavo Novaes *
> >>
> >>
> >>
> >>
> >> Em qua., 17 de mar. de 2021 às 07:04, João Denóis via lista <
> >> lista em firebase.com.br> escreveu:
> >>
> >> > Bom dia,
> >> > A tabela Itensfat tem mais de 1.500.000 registros, e você passa ela em
> rvl> um
> >> > left, já pensou em passar com INNER? Existe a possibilidade de criar
> um
> >> > index neste código tbm.
> >> >
> >> > Em ter., 16 de mar. de 2021 às 20:36, rodrigo via lista <
> >> > lista em firebase.com.br> escreveu:
> >> >
> >> > > 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
> rvl> 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
>
>
> ______________________________________________
> 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



-- 
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus


Mais detalhes sobre a lista de discussão lista