小编Tec*_*chy的帖子

重建超大主键索引

我有一个托管在 Azure 上的 SQL 数据库。问题是大小越来越失控,我可以在主键聚集索引中看到高达 99% 的碎片。

我可以使用online=on选项重建所有其他索引,并且不会影响性能。PK Clustered 索引之一的大小大于 200GB,因此 aREBUILD...WITH (ONLINE=ON)会导致锁定。

我们确实有来自所有时区的用户访问该站点,所以真的,我无法找到可以离线重建索引的时间。

在站点不停机的情况下重建大型索引的最佳策略是什么?

我相信重组无济于事,因为碎片化是 99%。问题是即使在线,表也会被锁定。主要问题是索引大于200GB。主键是一个整数。

sql-server clustered-index index-tuning azure-sql-database

16
推荐指数
2
解决办法
1万
查看次数

改变超大表上的列大小

我有一个包含 NVarChar(Max) 类型列的表。

在允许用户添加数据之前我没有采取很好的预防措施,所以现在我有超过 25 亿行,并且数据库变得超级大。

我正在尝试更改列以将大小更改为固定长度,其中应删除记录 > 该宽度。

这不是索引列。

我尝试过 LEN(Text)>width 但这是一个非常慢的函数,因为它会扫描数十亿行。

我们后来还尝试通过创建一个新表并将数据移到那里来将 Int 更改为 BigInt,但这需要一周左右的时间。

Alter Column 会冻结系统。

您能否提出任何其他方式或建议您认为最好的方法?

数据库托管在 Azure SQL 上

非常感谢 :)

sql-server azure-sql-database

6
推荐指数
2
解决办法
739
查看次数