MYSQL:为什么两个几乎相同的查询的 ORDER BY 时间不同

标签 mysql query-optimization sql-order-by

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/

相关文章:

mysql - SQL 在另一个 groupby 之上做一个 groupby

mysql - 如何为MySQL数据库启用PowerDesigner 16.5自增主键?

sql - 优化一个奇怪的 MySQL 查询

sql - 表值函数 - 输出中忽略排序依据

使用 GROUP BY 和 ORDER BY 时间戳 DESC 的 MySQL 查询

mysql - 嵌套 GROUP_CONCAT MySQL?

PHP购物车安全

java - 多线程读取文件

sql - 优化具有多个连接的 SQL 查询

sql-server - Order By 使用参数 varchar(100)