oracle啥意思 oracle數(shù)據(jù)庫(kù)里in和exits到底有什么區(qū)別?
oracle數(shù)據(jù)庫(kù)里in和exits到底有什么區(qū)別?表A(小表),表B(大表)select * from B where cc in (select cc from A) 這個(gè)語(yǔ)句中是先從A表中把cc
oracle數(shù)據(jù)庫(kù)里in和exits到底有什么區(qū)別?
表A(小表),表B(大表)select * from B where cc in (select cc from A) 這個(gè)語(yǔ)句中是先從A表中把cc找出來(lái),然后根據(jù)cc再在B中去找相關(guān)的cc 由于A表的cc遠(yuǎn)小于B表的cc 所以可以節(jié)省時(shí)間 select * from B exists (select cc from A where cc=B.cc)這句話是先從B表里把cc找出來(lái) 然后再在A表里找相關(guān)的cc 由于B表的cc遠(yuǎn)多于A表的cc 所以這樣做很浪費(fèi)時(shí)間 總結(jié): 用in 時(shí) 大表在前小表在后 用exists時(shí) 小表在前大表在后
oracle中in和not in的區(qū)別?
Oracle中關(guān)于in和exists,not in 和 not exists in和exists in 是把外表和內(nèi)表作hash 連接,而exists是對(duì)外表作loop循環(huán),每次loop循環(huán)再對(duì)內(nèi)表進(jìn)行查詢。 not exists:做NL,對(duì)子查詢先查,有個(gè)虛表,有確定值,所以就算子查詢有NULL最終也有值