mysql - NOT EXISTS 条件下的查询速度问题

标签 mysql datetime query-optimization correlated-subquery

我有一个有效的查询,但速度很慢。有没有办法加快这个速度?基本上,我有一个包含考勤卡条目的表,然后是第二个表,其中包含该条目的时间分割,由 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/

相关文章:

mysql - 如何恢复Innodb数据库?

SQL 变量比静态值返回需要更长的时间

java - DateTimeFormatter 一直不工作,错误?

ruby-on-rails - 如何优化对数千个 ID 的查询

sqlite - sqlite的成本模型是什么?

mysql - 免费的BSD。 nginx、php-fpm、PDO_mysql 驱动程序不起作用

php - 检查行是否在 while 循环中分组

javascript - 检查服务器的可达性

python - 从日期时间转换后比较字符串时出错

mysql - MySQL的使用说明