3

我有一个查询,它从一个表中读取大约 342 条记录,并检查记录是否不存在于另一个大约有 32000 条记录的表中。为此,我使用了“NOT IN”条件以及使用“NOT IN”条件更快地运行查询的最佳方法是什么,如下所示,似乎该过程要占用我的一生!

SELECT fname,lname,position 
FROM employees 
WHERE employees.id NOT IN(select projects.empid where projects.id='BRS213F-013')

我真的应该怎么做?

4

3 回答 3

6

如何使用LEFT JOIN

SELECT  a.fname, a.lname, a.position 
FROM    employees a
        LEFT JOIN projects b
            ON  a.ID = b.emp_ID AND
                b.id = 'BRS213F-013'
WHERE   b.emp_ID IS NULL

确保Employees.ID并且projects.emp_ID必须在其上定义键以提高性能。


Employees.ID如果尚未实现,则制作主键,

ALTER TABLE Employees ADD CONSTRAINT tb_pk PRIMARY KEY (ID)

如果尚未实现,则制作projects.emp_ID一个引用的外键Employees.ID

ALTER TABLE Projects 
ADD CONSTRAINT tb_fk FOREIGN KEY (EmpID) REFERENCES Employees (ID)
于 2013-04-03T05:47:14.850 回答
0
SELECT fname,lname,position 
FROM employees 
WHERE NOT EXISTS
(select * where projects.id='BRS213F-013' AND employees.id = projects.empid)
于 2013-04-03T06:17:41.610 回答
0

NOT EXISTS 比 not 更有效

于 2013-04-03T07:19:51.827 回答