gpt4 book ai didi

sql - Azure SQL DB - 添加了对 NVARCHAR 列的大小限制,并且数据库的大小变得臃肿。为什么会发生这种情况?

转载 作者:行者123 更新时间:2023-12-02 08:16:51 25 4
gpt4 key购买 nike

我有一个 Azure SQL DB 表,其中包含大约 70 万条记录和 9 列。其中大部分列最初设置为 NVARCHAR(max)

然后我决定应用 SQL 脚本来限制列大小,因为我认为这应该可以优化性能。我在 Azure Data Studio(我在 Mac 上)内针对每一列运行了以下查询:

  ALTER TABLE [MyTable] ALTER COLUMN [ColumnInQuestion1] nvarchar(500) NULL;
ALTER TABLE [MyTable] ALTER COLUMN [ColumnInQuestion2] nvarchar(500) NULL;
etc etc...

此查询大约需要 20 分钟才能完成。然而,在查看我的数据库后,我注意到 Azure 中的数据库大小增加了近 30% - 从大约 1.5GB 增加到略高于 1.9GB。

为什么会发生这种情况? Azure/Data Studio 是否在查询执行期间为表运行某种备份,并且之后不会删除该备份,或者限制列长度确实会增加数据库大小吗?

最佳答案

列大小从“MAX”更改为“500”改变了 SQL 在表行中分配数据的方式。使用“MAX”列处理行的方式可能会留下页面(数据的逻辑 block )。

重建其中包含已更改列的任何索引。

在表上运行 DBCC CLEANTABLE 命令。 https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-cleantable-transact-sql?view=sql-server-ver16

关于sql - Azure SQL DB - 添加了对 NVARCHAR 列的大小限制,并且数据库的大小变得臃肿。为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72824844/

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