Desafio: Cadê meu Join?


Dessa vez apresento um desafio curioso que recebi esses dias enquanto estava no escritório. Uma pessoa me apresentou uma consulta SQL que relacionava os dados de cliente com os endereços.

SELECT c.* FROM Clientes c LEFT OUTER JOIN Regioes r

ON c.regiaoId = r.regiaoId AND

r.regiaoId IS NULL

O interessante é que o plano de execução gerada não possui JOIN entre tabelas. Surge a pergunta: CADÊ MEU JOIN???

image

O problema fica mais interessante quando substituimos o LEFT OUTER JOIN por um INNER JOIN, pois o plano de execução não apresenta a leitura em nenhuma tabela.

SELECT c.* FROM Clientes c INNER JOIN Regioes r

ON c.regiaoId = r.regiaoId AND

r.regiaoId IS NULL

image

A pergunta desse Desafio Ninja é:

O que aconteceu com o Join de tabela e com a operação de Table Scan?

Poste sua opinião e resposta na seção de comentários.

Comments (0)