Posted on 2019-01-11 09:33
Prayer 閱讀(397)
評論(0) 編輯 收藏 引用 所屬分類:
DB2
參考:https://www.2cto.com/database/201109/104960.html;http://ask.csdn.net/questions/680006
1 :
SELECT
*
FROM
華東
WHERE
公司代碼 IN ( SELECT 公司代 FROM 備選客戶 WHERE 公司代 != '' AND 公司代 IS NOT NULL );
2:用exists替換
SELECT
*
FROM
華東
WHERE
EXISTS (
SELECT
公司代
FROM
備選客戶 where 華東.公司代碼=`備選客戶`.公司代);
3: in和exists一點區別
exists做為where 條件時,是先對where 前的主查詢詢進行查詢,然后用主查詢的結果一個一個的代入exists的查詢進行判斷,如果為真則輸出當前這一條主查詢的結果,否則不輸出。
in 是把外表和內表作hash 連接,而exists是對外表作loop循環,每次loop循環再對內表進行查詢。一直以來認為exists比in效率高的說法是不準確的。
如果查詢的兩個表大小相當,那么用in和exists差別不大。
如果兩個表中一個較小,一個是大表,則子查詢表大的用exists,子查詢表小的用in:
---------------------
作者:csdncooker
來源:CSDN
原文:https://blog.csdn.net/csdncooker/article/details/79299258
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!