【開發篇sql】 條件和表示式(六) Exists, not exsists,in ,not in
6,Exists, not exsists,in ,not in
先來描述一下oracle的連線和子查詢,在很多情況下,連線和子查詢可以相互替代,這時候如何選擇使用很多是憑個人習慣,不過二者在執行的效率問題上面確並不是完全一樣的,往往需要根據具體的資料量的大小結合執行計劃來調整。
in和exists同樣可以相互替代,也需要根據具體的情況來選擇使用。使用in的情況下,oracle有限查詢子查詢,然後匹配外層查詢,exists則剛好相反。
一般來說,後面的子查詢結果集如果比較小的話,一般使用in,如果子查詢較大,而外層的查詢相對較小,則使用exists。
Not in 和not exists則不能完全替換,他們有一些差異。具體先看一個例子:
SQL> select * from t_test_chr a ;
TYPE TYPE_VARCHAR2 TYPE_NVARCHAR2
---- -------------------- --------------------
1111 1111 1111
1
SQL> select * from t_test_chr a where not exists (select 1 from t_test_chr where type_varchar2 = a.type_varchar2 );
TYPE TYPE_VARCHAR2 TYPE_NVARCHAR2
---- -------------------- --------------------
1
SQL> select * from t_test_chr a where type_varchar2 not in (select type_varchar2 from t_test_chr);
no rows selected
而exists 和in分別的結果是:
SQL> select * from t_test_chr a where exists (select 1 from t_test_chr where type_varchar2 = a.type_varchar2 );
TYPE TYPE_VARCHAR2 TYPE_NVARCHAR2
---- -------------------- --------------------
1111 1111 1111
SQL> select * from t_test_chr a where type_varchar2 in (select type_varchar2 from t_test_chr);
TYPE TYPE_VARCHAR2 TYPE_NVARCHAR2
---- -------------------- --------------------
1111 1111 1111
這樣區別就一目瞭然了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-662801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【開發篇sql】 條件和表示式(十) 特定的dmlSQL
- 【開發篇sql】 條件和表示式(九) group by語句SQL
- 【開發篇sql】 條件和表示式(五) 集合運算SQL
- 【開發篇sql】 條件和表示式(三) Null詳解SQLNull
- 【開發篇sql】 條件和表示式(八) 10g 正規表示式SQL
- 【開發篇sql】 條件和表示式(一) 資料型別SQL資料型別
- 【開發篇sql】 條件和表示式(四) 幾個常見的偽列SQL
- 【開發篇sql】 條件和表示式(七) decode,case when,connect by 語句SQL
- 【開發篇sql】 條件和表示式(二) 資料型別的比較規則SQL資料型別
- 通用函式和條件表示式函式
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- CMake 生成器表示式---條件表示式和邏輯運算子
- Java 條件表示式的優化Java優化
- Odoo Domain條件表示式寫法總結OdooAI
- 第六講、Vue3.x中使用JavaScript表示式 、條件判斷、 計算屬性和watch偵聽VueJavaScript
- SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差別SQL
- 3.1Python流程控制(1):條件表示式Python
- PL/SQL 條件SQL
- 六、Vue條件判斷Vue
- EntityFramework動態多條件查詢與Lambda表示式樹Framework
- 「譯」編寫更好的 JavaScript 條件式和匹配條件的技巧JavaScript
- 【SQL】SQL中if條件的使用SQL
- 條件函式函式
- Oralce 使用SQL中的exists 和not exists 用法詳解SQL
- 一個NOT EXISTS含有OR條件子查詢的優化優化
- Sql Server系列:運算子和表示式SQLServer
- 【SQL】existsSQL
- SQL中on條件與where條件的區別[轉]SQL
- 學習《PLSQL開發指南》筆記——條件和序列控制SQL筆記
- SQL CASE 表示式SQL
- SQL多條件查詢SQL
- Java Web(六) EL表示式JavaWeb
- impala 條件函式函式
- 『忘了再學』Shell基礎 — 28、AWK中條件表示式說明
- C#動態查詢:巧用Expression組合多條件表示式C#Express
- 把條件寫在單獨的if語句和放在for迴圈表示式中的區別
- 淺談Kotlin語法篇之Lambda表示式完全解析(六)Kotlin
- 條件和排序排序