1.如果要查詢的列上沒有NULL值,NOT IN 和 NOT Exist效率是一樣的.
2.當資料量較少時,not in執行速度比not exists快,反之,not exists較可取
3.同樣,處理 IN 和Exist 也有下面的規則:
- 內查詢為小表,外查詢為大表時,使用IN的效率高
- 內查詢為大表,外查詢為小表時,使用Exist的效率高.
例:
select count(*) from bigtable where id in(select id from smalltable)
效率高
select count(*) from bigtable where exists ( select null from smalltable where smalltable.id=bigtable.id )
效率低
select count(*) from smalltable where id in (select id from bigtable)
效率差一點
select count(*) from smalltable where exists ( select null from bigtable where smalltable.id = bigtable.id )
效率好一點.
沒有留言:
張貼留言