Oracle
這是 Oracle Where exists (Select NULL FROM…) 中的新常見模式嗎?
幾年前,寫作很常見
where exists (Select * from some_table where some_condition)
去年我注意到許多 t-sql 腳本改用數字 1 而不是星號
where exists (Select 1 from some_table where some_condition)
WHERE EXISTS (SELECT NULL FROM ...
這是 Oracle 的常見模式嗎?哪些是使用這樣的東西的性能參數。
簡短的回答:我希望不會!
甚至這個
SELECT 1
成語也可能已經過時了,因為數據庫引擎已經足夠先進,可以辨識出您並不真正想要這些行,您只想知道這些行是否存在。我查看了 SQL 2005 中的執行計劃,並且通常看到這些被重寫為連接,即使在哪裡SELECT *
使用。
在 Oracle 中,性能無關緊要。您甚至可以將 1/0 放在那裡,並且該語句不會返回除以零的錯誤,因為未計算表達式。