1. 如果要查询的列上没有NULL值,NOT IN 和 NOT Exist效率
是一样的.
2. 跟beckhamboo说的基本类似:
当数据量较少时,not in执行速度比not exists快
反之,not exists较可取
3. 同样,处理 IN 和Exist 也有下面的规则:
内查询为小表,外查询为大表时,使用IN的效率高,例如:
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 )
效率低
反之,内查询为大表,外查询为小表时,使用Exist的效率高.
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 )
效率好一点.
sql中exists与in效率
最新推荐文章于 2024-04-21 14:13:51 发布