在索引字段上排序是否有任何优势

时间:2012-06-19 06:11:10

标签: mysql sql indexing

我想在某个字段上执行排序操作。是否有利于在该领域制定索引。例如:

SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`

在这个查询中,我知道有一个年龄索引是有帮助的,但如果我维护一个名称索引会更好。索引是否可以获得性能提升。其他查询也经常需要ORDER BY操作。

1 个答案:

答案 0 :(得分:5)

单独name上的索引不太可能对此查询有显着帮助,但(age, name)上的索引会有所帮助。

虽然它并不完全准确,但将索引视为按索引中的键排序的行列表(例如,首先按age排序,然后按name排序)通常是有益的。对于示例查询,具有age=33的所有行自然会从按名称排序的复合索引中出来,从而使您无需单独排序。为name设置单独的索引不会有同样的方法。