Questo sobre SQL Server

Ontem me deparei com uma questo um tanto quanto interessante…
Qual o resultado das queries abaixo? Elas so equivalentes???

Query 1:


Query 2:


Passando o olho rapidamente, parece ser a mesma coisa, mas reparem na ltima linha, a nica diferena entre elas o uso do where e o outro existe somente o join.

Bom, a resposta : No, elas no so equivalentes… o resultado completamente diferente!!
Execute no SSMS e veja.
Mas agora vamos ao “Mas porque isso acontece?”
Isso ocorre pois quando o SQL Server processa um join, a engine escolhe o mtodo mais eficiente de process-la. Apesar da execuo fsica de vrios joins utilizar diferentes formas de otimizao, a sequncia (sem trema) lgica :

1. A condio do join na clusula FROM aplicada.
2. A condio do join e a condio da busca da clusula WHERE aplicada.
3. a condio da busca da clusula HAVING aplicada.

Esta sequncia pode s vezes influenciar no resultado de uma query se condies so movidas entre a clusula FROM e a WHERE.

Referncia do estudo: Join Fundamentals

A segunda consulta equivalente consulta abaixo, que mostra de form
a mais clara o resultado vazio que T2:

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.