【发布时间】:2015-05-28 15:45:44
【问题描述】:
我有以下 SQL 查询。
SELECT em.employeeid, tsi.timestamp
FROM timesheet_temp_import tsi
JOIN employee emp ON emp.employeeid = tsi.credentialnumber
WHERE
tsi.masterentity = 'MASTER' AND
tsi.timestamp NOT IN
(
SELECT ea.timestamp
FROM employee_attendance ea
WHERE
ea.employeeid = em.employeeid
AND ea.timestamp = tsi.timestamp
AND ea.ismanual = 0
)
GROUP BY em.employeeid, tsi.timestamp
此查询比较导入表(与员工时间和出勤时间戳)。
有时timesheet_temp_import 有超过 95,000 行,我的查询必须仅显示该员工的新时间戳。如果员工的时间戳已经存在,那么我必须排除它。
查询正在运行,但耗时超过 4 分钟,所以我想知道是否可以使用其他可以帮助我减少时间的改进 NOT IN 语句。
【问题讨论】:
-
关于查询性能的问题,请同时指定表结构和索引,以及这些表中数据量的指示。
-
您能否使用
WHERE子句限制主要的SELECT以仅获取timesheet_temp_import中的最新条目?您可以使用某种书签...
标签: sql sql-server performance tsql notin