[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