我在5个键(列)上有一个聚簇索引。我在2列上有一个非聚集索引。因为我在一次运行中插入了2-3百万行,所以我将2列非聚集索引更改为聚簇,并将5列聚簇索引更改为5列非聚簇索引。我的问题。
在对索引进行聚类时(基本上删除并重新创建索引为clustered
),我不需要include
(任何列),因为这是聚类的?
将less列索引切换为clustered并将大列聚簇索引更改为unclustered一般是否正确?换句话说,聚集索引应该简单而小?
如果切换这两个索引,是否存在任何性能问题?
答案 0 :(得分:0)
除非是链接表,否则通常在1列上有聚簇索引。一般的建议是为聚集索引列选择尽可能小的类型(当然这符合您的要求)。拥有多列不仅会增加大小(每个非聚集索引存储聚集索引的值[包括聚簇索引]!),而且还会大大增加外部碎片的可能性并降低性能,即使是{{1} }。因此,我对你的问题的答案。
更新我意识到(感谢 Aaron Bertrand 指出这一点)我对于将聚簇索引包含在非聚集索引中做了相当模糊的陈述。为了绝对正确,每个非聚集索引包括指向行的行定位器。当表是群集时,行定位器是聚簇索引键。 More info regarding clustered indexes