[英]Clustered and nonclustered index large data insert
我在 5 个键(列)上有一个聚集索引。 我在 2 列上有一个非聚集索引。 因为我在一次运行中插入了 2-3 百万行,所以我将 2 列非聚集索引更改为聚集索引,并将 5 列聚集索引更改为 5 列非聚集索引。 我的问题。
当使索引聚集时(基本上删除并重新创建索引作为clustered
),我不需要include
(任何列),因为这是聚集的?
我将较少的列索引切换为聚集并将大列聚集索引更改为非聚集通常是否正确? 换句话说,聚集索引应该是简单的还是小的?
如果我切换这两个索引会不会有任何性能问题?
除非它是链接表,否则通常在 1 列上有聚集索引。 一般建议是为聚集索引列选择尽可能小的类型(当然这符合您的要求)。 拥有许多列不仅会增加大小(每个非聚集索引都存储聚集索引的值 [包括聚集索引]! ),而且还会大大增加外部碎片和降低性能甚至inserts
。 因此,我对你的问题的回答。
更新我意识到(感谢Aaron Bertrand指出这一点)我对将聚集索引包含在非聚集索引中做了相当模糊的声明。 为了绝对正确,每个非聚集索引都包含指向行的行定位器。 当表被聚簇时,行定位器是聚簇索引键。 有关聚集索引的更多信息: [1] , [2] 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.