[firebase-br] Regressão no Firebird???
Denis Pereira Raymundo
denisuba em gmail.com
Qua Maio 11 14:54:13 -03 2016
Fala Gladiston,
Eu respondi aos questionamentos do Vlad. Melhorou um pouco sim com
EXISTS, mas ainda é inferior ao 2.5.1.
Como eu disse, o problema desta query aqui já resolvemos. Rodamos em
duas execuções, uma montando uma lista e na outra já colocando a SQL montada
sem subselects.
Só me preocupei é com todas as querys do sistema. Se tiver que mexer em
todas será dureza.
Quanto ao plano, sei que muda a avaliação de uma versão para outra, mas
mesmo eu forçando o mesmo plano da versão anterior não resolveu. Parece que
o problema não está na escolha do plano, mas na leitura do disco mesmo.
Aqui na empresa às vezes também usamos CTE e realmente em algumas
situações a diferença é absurda.
"Gladiston Santana" escreveu na notícia da
mensagem:CA+TRsrq14fMB+gDSHPbWJzii9MeRPDRGjAPJT8zm2wdoq+qbmQ em mail.gmail.com...
Olhando no bugtrack onde postou o codigo, realmente a query é cabeluda e a
colocação do Vlad com [NOT] IN e do uso do [NOT] EXISTS, na minha opinião,
foi perfeita.
Inclusive, essa foi uma consideração antiga e acalorada aqui na lista, onde
alguns disseram ser a mesma coisa em termos de performance, mas
aparentemente não é.
De versão para versão, o plano de execução realmente pode mudar, não é
apenas o FB, mas qualquer RDBMS que lide com o custo da operação e o
fb2.5.1 e fb2.5.5 aparentemente demonstraram isso com sua query, o que
significa uma possível regressão.
O FB tem um recursos bacanas para escrever queries cabeludas, especialmente
as que usam queries derivativas, chama-se CTEs, se bem utilizados,
simplificam o entendimento de uma querie e podem até melhorar a performance:
http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-dml-select.html#fblangref25-dml-select-cte
inte+
Em 11 de maio de 2016 08:10, Denis Pereira Raymundo
<denisuba em gmail.com>
escreveu:
> Por incrível que pareça, a SQL não resulta registro algum.
>
> Mais interessante, se eu rodar uma sql envolvendo as mesmas tabelas, mas
> sem aplicar os filtros, o resultado é mais rápido.
>
> Este comando SQL (cabeludo) não é obra prima minha.
______________________________________________
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