0

我有桌子员工,桌子运动有 n 到 m 关系,这意味着,我还有一张桌子,比如说桌子 emp_sport

表员工

emp_id emp_name
------------------
e1 名称1
e2 名称2
e3 名称3
e4 名称4

桌上运动
sport_id 运动名称
---------------------
sp1 spName1
sp2 spName2
sp3 spName3

表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 名称2
e3 名称3
e4 名称4

问题是,当我在表员工和 emp_sport 中有非常大的数据时,查询非常慢。

4

1 回答 1

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"
于 2014-02-07T04:37:13.000 回答