IN和EXISTS的處理流程

2021-04-25 22:51:03 字數 626 閱讀 3715

in和exists的處理流程是不一樣的:

in的執行流程

select * from t1 where x in ( select y from t2 )

可以理解為:

select * from t1, ( select distinct y from t2 ) t2 where t1.x = t2.y;

exists的執行流程

select * from stu_tab where exists ( select * from grade_tab where sno = stu_tab.sno )

可以理解為:

for i in ( select * from stu_tab )

loop

if ( exists ( select null from grade_tab where sno = stu_tab.sno.i ) --i帶表記錄行行號

then

output the record --為true,返回一條記錄

end if

end loop

in 和 exists的比較

系統要求進行sql優化,對效率比較低的sql進行優化,使其執行效率更高,其中要求對sql中的部分in not in修改為exists not exists 修改方法如下 in的sql語句 select id,category id,htmlfile,title,convert varchar 20 ...

IN和EXISTS的詳解

從效率來看 1 select from t1 where exists select 1 from t2 where t1.a t2.a t1資料量小而t2資料量非常大時,t1 2 select from t1 where t1.a in select t2.a from t2 t1資料量非常大而t...

in 和 exists的區別

select from a where id in select id from b 以上查詢使用了in語句,in 只執行一次,它查出b表中的所有id欄位並快取起來.之後,檢查a表的id是否與b表中的id相等,如果相等則將a表的記錄加入結果集中,直到遍歷完a表的所有記錄.它的查詢過程類似於以下過程 ...