SQL IN Exists 介紹(查詢 效率/速度/加快/加速)

SQL IN Exists 介紹(查詢 效率/速度/加快/加速)

SQL IN Exists 介紹(查詢 效率/速度/加快/加速)


資料來源:http://robertvmp.pixnet.net/blog/post/25013411-oracle—exists-%E5%8F%96%E4%BB%A3-in-%E5%8F%AF%E5%8A%A0%E5%BF%AB%E6%9F%A5%E8%A9%A2%E7%9A%84%E9%80%9F%E5%BA%A6


http://eeluck.pixnet.net/blog/post/27559378-in%E5%92%8Cexists%E7%9A%84%E5%B7%AE%E7%95%B0

文章01.
    較慢

    SELECT  * 
    FROM    TB_RBND903
    WHERE   BND_PROD_CD IN ( SELECT PROD_CD  FROM TB_RBND601 )

    較快

    SELECT *
    FROM   TB_RBND903 A
    WHERE  EXISTS ( SELECT PROD_CD
                      FROM TB_RBND601
                      WHERE PROD_CD = A.BND_PROD_CD
                   )
                   

文章02.
    in和EXISTS 大多是效能上的考量
        1.in的用法原理是在於,需要以逐行比較,效能性來說會比較慢
        2.EXISTS是用一整個集合來做比較,用來過濾不要的資料,在效能上來說會比較快。

    簡單的一句話,外大內小=IN,外小內大=EXISTS,這是一個實用的概略評估方法,在大部分的情況下是適用的。

3 thoughts on “SQL IN Exists 介紹(查詢 效率/速度/加快/加速)

  1. https://mp.weixin.qq.com/s/yW5Xy7yJ8i0iZ0LXhAMFWg

    In 或 not in在SQL語句中經常用到,尤其當子查詢中有空值的時候,要謹慎考慮。 因為即使寫了”正確”的腳本,但是返回結果卻不正確,也不出錯。

    在不是很理解的情況下,最好使用 exists和 not exists來替換。 而且exists查詢更快一些,因為只要在子查詢找到第一個符合的值就不繼續往下找了,所以能用exists就用吧。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *