2008年6月1日 星期日

Difference between "Not in" and "Not Exist" In SQL

1.如果要查詢的列上沒有NULL值,NOT   IN   和   NOT   Exist效率是一樣的.

2.當資料量較少時,not   in執行速度比not   exists快,反之,not   exists較可取
3.同樣,處理   IN   和Exist   也有下面的規則:

  1. 內查詢為小表,外查詢為大表時,使用IN的效率高
  2. 內查詢為大表,外查詢為小表時,使用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   )  
效率好一點.

沒有留言:

張貼留言