我有两个数据库表:“雇员”和“部门”。雇员的表有两列主键id和emp_name,部门表有两列主键id和emp_name。
应该有一个表之间的关系作为外键,但由于某种原因,这个关系是虚拟的
表中的数据,如
employee
id emp_name
1 'abc'
2 'efg'
4 'hij'
department
emp_id dept_name
1 'it'
2 'engineering'
3 'management'
5 'process'
我想从department表中选择所有不在employee表中的记录。
一种解决方案是
select d.*
from department
where d.id not in(select id from employee);
有没有更好的优化方式?
2条答案
按热度按时间fquxozlt1#
您可以使用
LEFT JOIN
:您应该比较执行计划以检查哪个查询具有最佳性能。
64jmpszr2#
使用
in
是可以的,但是使用exists
可能会执行得更快一些: