Vs中存在:IN之間diff和存在於甲骨文
點1:
在:有效當子查詢包含相比於外部查詢
存在更少的行數:有效時子與外部查詢相比,查詢包含大量的行。子查詢返回TRUE或FALSE。外部查詢執行一次,對於外部查詢子查詢中的每個值執行
但是在最近版本的Oracle中,它們傾向於被優化器重寫爲相同的,使用相同的執行計劃谷歌)。執行計劃是相同的兩個IN和存在(在我的電腦觀察)
點2:我在谷歌搜索的差異之間NOT IN和NOT
存在。但他們中的大多數人認爲兩者是相同的。
我的問題:
問題1(點1):我的假設是否正確?如果兩者都被oracle用相同的方式處理,那麼我們可以在查詢中使用IN還是EXIST?
問題2(第2點):有人可以解釋爲什麼兩者都是相同的嗎?
看看http://stackoverflow.com/questions/12896007/oracle-in-vs-exists-difference。差異也在處理空值 – ms32035
我一直認爲EXIST是更高性能的,因爲該語句計數記錄,而IN語句列出了一系列實際值。第一個似乎更容易處理:如果找到1條記錄,則不需要進一步搜索,因爲EXIST布爾子句已知。在IN的情況下,他可能需要經歷各種價值觀。難怪IN子句起源於精確值列表('A','B','C'),在這種情況下,EXIST子句真的不同。 – tvCa