SQL 查询中 not in的改进,--not exists

表结构:

教师表:table1,字段有:id,name;

学生表:table2,字段有:id,name;

教师id=学生id,即为本校毕业的学生留校当老师,要求检索非本校毕业的老师

select id,name from table1 where id not in (
select id from table2)

这种查询的效率比较低,原因网上有很多论述,改为not exists就比较好

select id,name from table1 a where not exists (
select 1 from table2 where id=a.id)

亲测,对于数据量比较大的表,效果明显。

 真实代码:

select level_id from td_level a where  
level_id not in(select  level2_id from td_level2)
--等价于
select level_id from td_level a where  
not exists (select 1 from td_level2 where level2_id=a.level_id)

 

posted @ 2020-10-09 14:50  notis  阅读(326)  评论(0编辑  收藏  举报