SELECT *
FROM `resumes` AS r
LEFT JOIN seeker_data_cached AS c ON r.user_id = c.user_id
ORDER BY r.user_id
SELECT *
FROM `resumes` AS r
LEFT JOIN seeker_data_cached AS c ON r.user_id = c.user_id
ORDER BY c.user_id
r.user_id 和 c.user_id 被索引。为什么这些查询的执行时间非常不同,是否可以采取任何措施来加快第二个查询的速度?
最佳答案
MySQL 文档包含 a section on ORDER BY
optimization在顶部附近有一个项目符号列表,列出了当性能不符合您的预期时要检查的事项。因此,第一件事可能是浏览该列表。
其中很多,我们可以根据您提供的信息排除,但其中许多涉及我们从您的问题中不知道但您可能知道的事情。
如果这没有帮助,请通过 EXPLAIN
运行两个查询,这可能会告诉您为什么一个查询的性能与另一个查询不同。
如果您将第二个查询中的 ON r.user_id = c.user_id
更改为 ON c.user_id = r.user_id
,我想看看会发生什么基于上面链接的文档中的一点,它谈到了“[t]用于获取行的键与 ORDER BY 中使用的键不同”的情况。
关于MYSQL:为什么两个几乎相同的查询的 ORDER BY 时间不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8360313/