2011-12-02 61 views
3
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:为什么2个几乎相同的查询的ORDER BY时间不同

+0

如果输出结果没有差异(看来是这种情况),为什么不使用第一个呢? – Benjam

+0

比较两个查询的执行计划会告诉你什么? –

+2

@Benjam所以我们可以学习。 – Wiseguy

回答

0

MySQL文档包含a section on ORDER BY optimization,它在顶部附近有一个项目符号列表,用于检查性能不符合您的期望时的情况。所以,第一件事可能是通过该清单。

其中很多人,我们可以根据您提供的信息排除,但其中许多涉及我们不知道您的问题,但您可能会知道的事情。

如果这样做没有帮助,请通过EXPLAIN运行这两个查询,这可能会告诉您为什么一个的性能不同于另一个。

我倾向于看看会发生什么,如果你在你的第二个查询基于以上地方谈论的情况下链接的文档中的位改变ON r.user_id = c.user_idON c.user_id = r.user_id“[T]他键用来获取行与ORDER BY中使用的不一样“。

相关问题