【问题标题】: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 正在寻找可用的解决方案,则必须提出问题。
  • 表中不同的行数可能会影响时间

标签: mysql query-optimization sql-order-by


【解决方案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 中使用的行不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多