假设我有以下查询:
SELECT * FROM table WHERE id = 1 ORDER BY name
为名称添加多列索引(id和name)或单独的索引是否更好?
答案 0 :(得分:3)
这取决于id
的基数。如果它具有高基数(意味着,很少行共享id
的相同值),则id
上的索引是个好主意。数据库将搜索id
并查看基表中的几个匹配行。
如果表的一半具有相同的id
,则查询将导致索引扫描。请注意,由于您使用的是*
,因此除非包含表中的所有列,否则不会使用多列索引。因此,只有包含在(name)
上排序的所有列的索引才能加快速度。
在一天结束时,通常最好不要创建索引,直到遇到特定的性能问题。具体细节将允许您测试&衡量您建议的指数是否有效。这几乎总是比猜测正确的索引更好。