Это новый общий шаблон в Oracle, где существует (выберите NULL FROM…)?

8

Несколько лет назад было принято писать

where exists (Select * from some_table where some_condition)

В прошлом году я заметил, что многие сценарии t-sql переключились на использование числа 1 вместо звезды

where exists (Select 1 from some_table where some_condition)

просто на ТАК я видел этот пример Oracle

WHERE EXISTS (SELECT NULL FROM ...

Это общий шаблон с Oracle? И какие аргументы производительности использовать что-то вроде этого.

bernd_k
источник
2
Так что есть обсуждение этого. stackoverflow.com/questions/424212/…
Ли Риффель

Ответы:

6

Краткий ответ: я надеюсь, что нет!

Даже SELECT 1идиома, возможно, изжила себя, так как движки баз данных достаточно продвинулись, чтобы понять, что строки на самом деле вам не нужны, вы просто хотите знать, существуют ли строки. Я рассмотрел планы выполнения в SQL 2005 и обычно видел их переписанными как объединения, даже там, где они SELECT *используются.

Ларри Коулман
источник
5

В Oracle это не имеет значения с точки зрения производительности. Вы даже можете поместить 1/0 туда, и оператор не вернет ошибку деления на ноль, потому что выражение не вычисляется.

Ли Риффель
источник
1
Должно ли это быть закрыто в пользу использования SO вопроса? Это один из тех, кто "переносит SO в dba.SE"?
Jcolebrand