4

可以说我有以下查询:

SELECT * FROM table WHERE id = 1 ORDER BY name

为名称添加多列索引(id 和名称)还是单独索引更好?

4

1 回答 1

3

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

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

归根结底,最好不要创建索引,直到遇到特定的性能问题。具体细节将允许您测试和衡量您提出的索引是否有效。这几乎总是比试图猜测正确的索引要好。

于 2012-07-25T20:14:20.070 回答