Oracle

這是 Oracle Where exists (Select NULL FROM…) 中的新常見模式嗎?

  • January 7, 2011

幾年前,寫作很常見

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 的常見模式嗎?哪些是使用這樣的東西的性能參數。

簡短的回答:我希望不會!

甚至這個SELECT 1成語也可能已經過時了,因為數據庫引擎已經足夠先進,可以辨識出您並不真正想要這些行,您只想知道這些行是否存在。我查看了 SQL 2005 中的執行計劃,並且通常看到這些被重寫為連接,即使在哪裡SELECT *使用。

在 Oracle 中,性能無關緊要。您甚至可以將 1/0 放在那裡,並且該語句不會返回除以零的錯誤,因為未計算表達式。

引用自:https://dba.stackexchange.com/questions/287