gpt4 book ai didi

sql-server - 如何加快重新创建集群索引

转载 作者:行者123 更新时间:2023-12-03 17:59:31 28 4
gpt4 key购买 nike

在 SQL Server 中,如果我想向聚簇索引定义中添加一个新列,则没有更改聚簇索引的选项。唯一的选择是删除并创建具有新定义的聚簇索引。

据我了解,删除和创建聚簇索引对于大容量表来说是非常昂贵和耗时的。

Cluster index recreate 重建表上的所有非聚集索引,这可能非常昂贵。

这个论坛的问题“无论如何我们可以加速集群索引的重建”

我能想到的一种解决方法是在重新创建集群索引之前删除所有非集群索引。这种方法行得通吗?

最佳答案

使用

CREATE .... WITH (DROP_EXISTING = ON)

代替

DROP ... 
CREATE ...

这意味着非聚集索引只需更新一次(包括新的键列)。不是两次 - 首先使用物理删除,然后再次使用新的 CI key 。

DROP_EXISTING子句告诉 SQL Server 现有的聚簇索引正在被删除,但将添加一个新的聚簇索引取而代之,让 SQL Server 推迟更新非聚簇索引,直到新的聚簇索引就位。

此外,如果聚集索引键没有改变并且被定义为 UNIQUE,SQL Server 根本不会重建非聚集索引,这不是将聚集索引定义为 UNIQUE 的明显性能优势

例子

CREATE TABLE #T
(
A INT,
B INT,
C INT
)

CREATE CLUSTERED INDEX IX ON #T(A)

CREATE CLUSTERED INDEX IX ON #T(A,B) WITH (DROP_EXISTING = ON)

DROP TABLE #T

关于sql-server - 如何加快重新创建集群索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41096616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com