[firebase-br] Uso de Indices

Léo Mees leomees em gmail.com
Qua Nov 22 08:20:17 -03 2017


Eu alteraria o teste 2 para:

SELECT D.* FROM NOTAFISCAL N
LEFT JOIN  DETAILFISCAL D ON (D.CODSEQ=N.SEQUENCIAL)
WHERE N.NUMNOTA=30000

Deve ficar muito rapido, o mesmo vale para o teste 3.
Levando em conta que existe indice de integridade entre as duas tabelas.





*Leonardo Mees.*
Itapiranga, SC



Em 22 de novembro de 2017 07:57, Marcos R. Weimer <marcosweimer em gmail.com>
escreveu:

> Ola!
>
> Por que está fazendo join no "NOTAFISCAL" ? Quais dados do cabeçalho você
> precisa nos itens ?
>
> Pergunto por que aqui usamos 2 querys, uma para o cabeçalho e outra para os
> itens, é rapido, temos clientes mais de 1.4 milhoes de notas emitidas, mais
> de 3 milhões de itens e não demora 6 segundos...
>
> por exemplo (neste banco com mais de 1.4 milhões de notas, servidor é um i7
> 2.8 8gb mas tem bastante coisa rodando nele, não é exclusivo para o banco
> pq é um servidor de testes):
>
> No cabeçalho
>
> Prepare time = 32ms
> Execute time = 15ms
> Avg fetch time = 15,00 ms
>
> nos itens: (neste caso especifico foram 6 itens)
>
> Prepare time = 31ms
> Execute time = 31ms
> Avg fetch time = 7,75 ms
>
>
> se juntar os 2 no mesmo (com left como vc fez)
>
> Prepare time = 46ms
> Execute time = 46ms
> Avg fetch time = 12,00 ms
>
> O que pode estar influenciando é o where, veja o seu "WHERE
> N.NUMNOTA=30000" neste caso deve usar o da tabela principal, já que o mesmo
> campo está disponivel nela, e não a do join, assim o indice é otimizado.
>
> Bom, ai estão meus 2 cents de contribuição, deixa o pessoal mais experiente
> falar sobre o assunto.
>
>
> -=Ma®©oS=-
> Marcos R. Weimer
> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
> http://eudoparana.blogspot.com.br/
>
>
> Em 21 de novembro de 2017 18:17, Rodrigo <firebase em dominioinf.com.br>
> escreveu:
>
> > Boa tarde a todos,
> >
> > Estou com um clientes que tem emissao de nota fiscal e na tabela
> > notafiscal ja possui 40.000 notas
> > e na tabela detailfiscal mais de 100.000 registros, pelo que ouço falar
> > não é muito pois muitos falam
> > em milhoes de registros e funciona bem rapido.
> >
> > Porem tenho encontrado alguma lentidão no meu caso, fiz uns testes para
> > ver a questão dos indices:
> >
> > Teste 1  -- utilizou a index foi rapido
> >
> > SELECT D.* FROM DETAILFISCAL D
> > LEFT JOIN NOTAFISCAL N ON (D.CODSEQ=N.SEQUENCIAL)
> > WHERE D.CODIGO=3000
> >
> > PLAN JOIN (D INDEX (PK_DETAILFISCAL), N INDEX (PK_NOTAFISCAL))
> >
> > Prepare: 0 ms  Execute: 188 ms  Fetch: 0 ms
> >
> > Teste 2 -- Não foi tão rapido - Não usou index
> >
> > SELECT D.* FROM DETAILFISCAL D
> > LEFT JOIN NOTAFISCAL N ON (D.CODSEQ=N.SEQUENCIAL)
> > WHERE N.NUMNOTA=30000
> >
> >
> > PLAN JOIN (D NATURAL, N INDEX (PK_NOTAFISCAL))
> >
> > Prepare: 0 ms  Execute: 686 ms  Fetch: 514 ms
> >
> > Teste 3 -- Não foi tão rapido - Não usou index
> >
> > SELECT D.* FROM DETAILFISCAL D
> > LEFT JOIN NOTAFISCAL N ON (D.CODSEQ=N.SEQUENCIAL)
> > WHERE N.NUMNOTA STARTING WITH 3000
> >
> > PLAN JOIN (D NATURAL, N INDEX (PK_NOTAFISCAL))
> >
> > Prepare: 0 ms  Execute: 702 ms  Fetch: 530 ms
> >
> > Essas são selects simples, porem em algumas mais complexas, pode gerar 4
> a
> > 6 segundos de espera.
> >
> > Ja fiz backup e restore no banco mas continua lento.
> >
> > O que posso fazer para estar melhorando a performance?
> >
> > Grato
> >
> >
> > ---
> > Este email foi escaneado pelo Avast antivírus.
> > https://www.avast.com/antivirus
> >
> >
> > ______________________________________________
> > 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/pes
> > quisa_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