close
查詢條件句使用IN 比較好還是使用EXISTS?查詢條件句使用IN 比較好還是使用EXISTS?在撰寫SQL時,常常會煩惱要使用IN or EXISTS,在室內裝潢效能考量下,如何最快的做出抉擇呢? 這是我的閱讀經驗,詳細的內容請參考最後的連結,有更詳盡的介紹。 如果使用IN,執行過程將如同seo下列所示: Select * from T1 where x in ( select y from T2 ) LIKE: select * from t1, ( select distinct y from t2 ) t2 太平洋房屋where t1.x = t2.y; 如果使用EXISTS,如同上述的查詢結果,我們改寫成: select * from t1 where exists ( select null from t2 信用卡代償where y = x ) LIKE: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x ) then OUTPUT THE 西裝RECORD end if end loop 所以可以想想其中差異,當子查詢的表格是一個儲存巨大資料量的表格時,則使用第一個方法的 效能將比較差,因票貼為他的執行計畫是使用SORT MERGE JOIN,相對的如果子查詢 的TABLE相對比較小,使用IN的執行效率應該比較佳。 而如果外部的表格(例如花蓮民宿t1)是相對的儲存大量資料,則採用第一個方法IN的效率 將會比較好,如果你使用EXISTS,則除了會對t1這個bigtable進行full scan外, 還代償會一筆一筆讀取所有t1的資料列,效能自然較差。 簡單的一句話,外大內小=IN,外小內大=EXISTS,這是一個實用的概略評估方法, 在大部房屋買賣分的情況下是適用的。


.msgcontent .wsharing ul li { text-indent: 0; }



分享

Facebook
Plurk
房屋二胎 YAHOO!

arrow
arrow
    全站熱搜

    gq26gqxqbl 發表在 痞客邦 留言(0) 人氣()