用于订单的索引列

时间:2012-07-25 20:01:05

标签: sql indexing sql-order-by

假设我有以下查询:

SELECT * FROM table WHERE id = 1 ORDER BY name

为名称添加多列索引(id和name)或单独的索引是否更好?

1 个答案:

答案 0 :(得分:3)

这取决于id的基数。如果它具有高基数(意味着,很少行共享id的相同值),则id上的索引是个好主意。数据库将搜索id并查看基表中的几个匹配行。

如果表的一半具有相同的id,则查询将导致索引扫描。请注意,由于您使用的是*,因此除非包含表中的所有列,否则不会使用多列索引。因此,只有包含在(name)上排序的所有列的索引才能加快速度。

在一天结束时,通常最好不要创建索引,直到遇到特定的性能问题。具体细节将允许您测试&衡量您建议的指数是否有效。这几乎总是比猜测正确的索引更好。

相关问题