Oracle In和exists not in和not exists的比較分析
更新時間:2009年08月27日 00:50:33 作者:
一個是問in exist的區(qū)別,一個是not in和not exists的區(qū)別
把這兩個很普遍性的網(wǎng)友比較關心的問題總結(jié)回答一下。
in和exist的區(qū)別
從sql編程角度來說,in直觀,exists不直觀多一個select,
in可以用于各種子查詢,而exists好像只用于關聯(lián)子查詢
從性能上來看
exists是用loop的方式,循環(huán)的次數(shù)影響大,外表要記錄數(shù)少,內(nèi)表就無所謂了
in用的是hash join,所以內(nèi)表如果小,整個查詢的范圍都會很小,如果內(nèi)表很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
not in和not exists的區(qū)別
not in內(nèi)外表都進行全表掃描,沒有用到索引;
not extsts 的子查詢能用到表上的索引。
所以推薦用not exists代替not in
不過如果是exists和in就要具體看情況了
有時間用具體的實例和執(zhí)行計劃來說明。
in和exist的區(qū)別
從sql編程角度來說,in直觀,exists不直觀多一個select,
in可以用于各種子查詢,而exists好像只用于關聯(lián)子查詢
從性能上來看
exists是用loop的方式,循環(huán)的次數(shù)影響大,外表要記錄數(shù)少,內(nèi)表就無所謂了
in用的是hash join,所以內(nèi)表如果小,整個查詢的范圍都會很小,如果內(nèi)表很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
not in和not exists的區(qū)別
not in內(nèi)外表都進行全表掃描,沒有用到索引;
not extsts 的子查詢能用到表上的索引。
所以推薦用not exists代替not in
不過如果是exists和in就要具體看情況了
有時間用具體的實例和執(zhí)行計劃來說明。
相關文章
Oracle配置dblink訪問PostgreSQL的操作方法
本文給大家介紹下Oracle配置dblink訪問PostgreSQL的操作方法,通過dblink訪問PostgreSQL的詳細過程,對Oracle?dblink訪問PostgreSQL相關知識感興趣的朋友一起看看吧2022-03-03Oracle中幾種常見的數(shù)據(jù)庫錯誤類型及處理方法
處理常見的數(shù)據(jù)庫錯誤是數(shù)據(jù)庫管理的重要組成部分,以下是幾種常見的數(shù)據(jù)庫錯誤類型及其處理方法,結(jié)合具體代碼示例,以幫助你更好地解決這些問題,感興趣的小伙伴跟著小編一起來看看吧2024-09-09Oracle使用pivot和unpivot函數(shù)實現(xiàn)行列轉(zhuǎn)換
項目開發(fā)過程中常常會涉及到oracle數(shù)據(jù)庫的一個數(shù)據(jù)操作,那就是行列的互轉(zhuǎn),本文為大家介紹了兩個可以實現(xiàn)這一操作的函數(shù)pivot和unpivot,感興趣的可以了解一下2023-06-06oracle實現(xiàn)一對多數(shù)據(jù)分頁查詢篩選示例代碼
這篇文章主要給大家介紹了關于oracle實現(xiàn)一對多數(shù)據(jù)分頁查詢篩選的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-11-11巧妙解決Oracle NClob讀寫問題(經(jīng)驗分享)
下面小編就為大家?guī)硪黄擅罱鉀QOracle NClob讀寫問題(經(jīng)驗分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10