最常见的SQL查询性能改善实践---用outer join 代替 not in

一公司中的同一员工可以属于多个不同部门,如何列出还没有分配部门的员工??

员工表:create table emp(id int primary key, name varchar(100))
部门表:create table depart(id int primary key, name varchar(10))
关系表:create table emp_depart(eid int,did int)

注释:eid 是员工表emp的外键, did 是部门表depart的外键

常见查询是(性能不好):

select * from emp where id not in (select eid from emp_depart)

性能好的查询用outer join:

select emp.* from emp left join emp_depart on emp.id=emp_depart.eid where emp_depart.eid is null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值