我有一个有效的查询,但速度很慢。有没有办法加快这个速度?基本上,我有一个包含考勤卡条目的表,然后是第二个表,其中包含该条目的时间分割,由 TimecardID 关联。我正在寻找的是没有故障的时间 block 。我想如果我把标准缩短到两个月,就会加快速度。感谢您的帮助
SELECT * FROM Timecards
WHERE NOT EXISTS (SELECT TimeCardID FROM TimecardBreakdown WHERE Timecards.ID = TimecardBreakdown.TimeCardID)
AND Status <> 0
AND DateIn >= CURRENT_DATE() - INTERVAL 2 MONTH
最佳答案
您似乎想知道 TimecardBreakdown 表中不存在的 TimecardID,在这种情况下您可以使用左外连接。
SELECT a.*
FROM Timecards a
LEFT OUTER JOIN TimecardBreakdown b ON a.TimecardID = b.TimecardID
WHERE b.TimecardID IS NULL
这将摆脱子查询(这是昂贵的)并使用联接(这是更有效的)。
关于mysql - NOT EXISTS 条件下的查询速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896888/