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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.