Это новый общий шаблон в 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? И какие аргументы производительности использовать что-то вроде этого.


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

Ответы:


6

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

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


5

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


1
Должно ли это быть закрыто в пользу использования SO вопроса? Это один из тех, кто "переносит SO в dba.SE"?
Jcolebrand
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.