我有Table员工,Table sport有n到m的关系,这意味着,我还有一个表,让我们说表emp_sport
表员工
emp_id emp_name ------------------ e1 name1 e2 name2 e3 name3 e4 name4 table sport sport_id sport_name --------------------- sp1 spName1 sp2 spName2 sp3 spName3 table emp_sport emp_id sport_id ------------------- e1 sp1 e1 sp2 e1 sp3 e2 sp2
我想从这样的员工中选择数据
select distinct(e.emp_id), e.emp_name
from employee e
where e.emp_id not in (select sp.emp_id from sport_emp sp where sp.sport_id = 'sp1')
结果,我有
e2 name2 e3 name3 e4 name4
问题是,当我在表employee和emp_sport中有非常大的数据时,查询非常慢。
答案 0 :(得分:0)
如果可能,请始终使用联接。子查询永远是缺乏绩效的原因。
试一下
select e."emp_id",e."emp_name"
from "employee" e
inner join "emp_sport" es on es."emp_id"=e."emp_id"
where es."sport_id"='sp1'
group by e."emp_id",e."emp_name"