MYSQL:为啥两个几乎相同的查询的 ORDER BY 时间不同
Posted
技术标签:
【中文标题】MYSQL:为啥两个几乎相同的查询的 ORDER BY 时间不同【英文标题】:MYSQL: why does the ORDER BY time differ for the 2 almost identical queriesMYSQL:为什么两个几乎相同的查询的 ORDER BY 时间不同 【发布时间】:2011-12-02 17:36:10 【问题描述】: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 被索引。为什么这些查询的执行时间差别很大,有什么办法可以加快第二次查询的速度?
【问题讨论】:
如果输出没有差异(看起来是这样),为什么不直接使用第一个呢? 比较两个查询的执行计划告诉你什么? @Benjam 这样我们就可以学习了。 @Wiseguy- 我同意,但如果 OP 正在寻找可用的解决方案,则必须提出问题。 表中不同的行数可能会影响时间 【参考方案1】:mysql 文档包含a section on ORDER BY
optimization,在靠近顶部的位置有一个项目符号列表,列出了当性能不符合您的预期时要检查的事项。因此,第一件事可能是通过该列表。
其中许多,我们可以根据您提供的信息排除,但其中许多涉及我们从您的问题中不知道但您可能知道的事情。
如果这没有帮助,请通过EXPLAIN
运行这两个查询,这可能会告诉您为什么一个的性能与另一个不同。
如果您将第二个查询中的ON r.user_id = c.user_id
更改为ON c.user_id = r.user_id
,我会倾向于看看会发生什么情况获取的行与 ORDER BY 中使用的行不同。
【讨论】:
以上是关于MYSQL:为啥两个几乎相同的查询的 ORDER BY 时间不同的主要内容,如果未能解决你的问题,请参考以下文章
为啥在mysql中第一个union两个子句的order by不起作用