gpt4 book ai didi

sql - 将表列从 "Text"转换为 Varchar(max) 后的问题

转载 作者:行者123 更新时间:2023-12-02 05:10:47 26 4
gpt4 key购买 nike

我有一个名为 Person 的表,其中包含“文本”类型的列 PersonDescription。我在更新此专栏时遇到问题,所以我运行了脚本

ALTER TABLE dbo.Person ALTER COLUMN PersonDescription VARCHAR(max)

将列更改为可变字符(最大值)。这一切都很好,立即运行。但是现在我注意到,每当我尝试更新此专栏时,执行最多需要 3-4 分钟。查询是

Update Person set PersonDescription ='persons description' where personid=18

运行此更新后,它会立即执行。这一切都很好,但是当这个更改投入生产时,这个表有一百万条记录,所以每个登录的人都会在这个运行时超时。谁能告诉我如何防止这种情况发生。我需要运行另一个脚本等吗?运行更新后,我看到 Statman 在 sqlserver 上运行,这很花时间。

谢谢尼尔

最佳答案

我认为问题是由于 SQL Server 计算是否应该将数据存储在 blob 或行中。

参见:Using varchar(MAX) vs TEXT on SQL Server

“VARCHAR(MAX) 类型是 TEXT 的替代品。基本区别在于 TEXT 类型将始终将数据存储在 blob 中,而 VARCHAR(MAX) 类型将尝试将数据直接存储在行中,除非它超过了 8k 的限制,此时它会将其存储在一个 blob 中。”

您是否也在使用全文索引?禁用索引、更新、重建索引。

您是否尝试过创建一个新表并将记录复制到其中?您是否仍然遇到相同的性能问题?

关于sql - 将表列从 "Text"转换为 Varchar(max) 后的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819650/

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