我想在某个字段上执行排序操作。是否有利于在该领域制定索引。例如:
SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`
在这个查询中,我知道有一个年龄索引是有帮助的,但如果我维护一个名称索引会更好。索引是否可以获得性能提升。其他查询也经常需要ORDER BY
操作。
答案 0 :(得分:5)
单独name
上的索引不太可能对此查询有显着帮助,但(age, name)
上的索引会有所帮助。
虽然它并不完全准确,但将索引视为按索引中的键排序的行列表(例如,首先按age
排序,然后按name
排序)通常是有益的。对于示例查询,具有age=33
的所有行自然会从按名称排序的复合索引中出来,从而使您无需单独排序。为name
设置单独的索引不会有同样的方法。