Esse é um novo padrão comum no Oracle Onde existe (selecione NULL FROM…)?

8

Anos atrás, era comum escrever

where exists (Select * from some_table where some_condition)

No ano passado, notei que muitos scripts t-sql passaram a usar o número 1 em vez da estrela

where exists (Select 1 from some_table where some_condition)

apenas no SO eu vi este exemplo Oracle

WHERE EXISTS (SELECT NULL FROM ...

Esse é um padrão comum com o Oracle? E quais são os argumentos de desempenho para usar algo como isto.

bernd_k
fonte
2
SO tem uma discussão sobre isso. stackoverflow.com/questions/424212/…
Leigh Riffel

Respostas:

6

Resposta curta: espero que não!

Até o SELECT 1idioma pode ter perdido sua utilidade, já que os mecanismos de banco de dados avançaram o suficiente para reconhecer que você realmente não deseja as linhas, apenas deseja saber se as linhas existem. Examinei os planos de execução no SQL 2005 e, geralmente, os reescrevi como junções, mesmo onde SELECT *é usado.

Larry Coleman
fonte
5

No Oracle, não importa o desempenho. Você pode até colocar 1/0 lá e a instrução não retornará um erro de divisão por zero porque a expressão não é avaliada.

Leigh Riffel
fonte
11
Isso precisa ser fechado em favor da confiança na questão do SO? É um daqueles "migrar o SO para o dba.SE"?
jcolebrand