Text

quinta-feira, abril 8

Uso de parênteses afeta consulta SQL?

Outro dia desses fui questionado sobre a utilização dos parenteses em uma consulta SQL. Pq usar? E o pq não deixar de usar? Estava pesquisando algo sobre esse assunto quando esbarrei num link do Mysql.com http://dev.mysql.com/doc/refman/4.1/pt/where-optimizations.html onde é dito que em consultas MySql é possível otimizar a select fazendo uso dos parênteses.

A princípio parece a maior besteira do universo, mas pensando bem esta idéia tem toda razão. Pois quando se utiliza o parênteses em demasia o interpretador de consultas sql do banco de dados, pode "se perder" ou demorar mais para analisar a precedência das condições. Considerando que o processamento do WHERE é feito da esquerda para a direita, porém se você colocar parênteses em alguma das expressões, a ordem da execução pode ser alterada. Se você colocar um monte de parênteses sem necessidade, com certeza irá gerar um trabalho extra para o Query Optimizer, gerando talvez, uma queda de performance.

A pergunta que não quer calar é: Isso se aplica também ao Sql Server? Se a resposta for sim, e em consultas pré-compiladas (tal como as Stored Procedures) existe impacto na performance com o uso excessivo de parênteses? Devo confessar que ainda não cheguei a uma conclusão, mas pensando bem o parênteses em si (o símbolo), obviamente não afeta a performance. Mas sim, a disposição das expressões dentro da cláusula WHERE, e talvez possa afetar de alguma forma. Acho que ninguém pensa nisso na hora de criar um procedure Smile.

0 comentários:

Postar um comentário