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已编入索引。为什么这些查询的执行时间差别很大,是否可以采取任何措施来加速第二次查询?
答案 0 :(得分:0)
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中使用的密钥不同。