我有一个名为Person的表,列名为PersonDescription,类型为“text”。 我在更新此列时遇到了问题,因此我运行了脚本
ALTER TABLE dbo.Person ALTER COLUMN PersonDescription VARCHAR(最大)
将列更改为 VARCHAR(最大值)。这一切都很好,并立即运行。但是现在我注意到,无论何时我尝试更新此列,都需要3-4分钟才能执行。查询是
更新人员设置PersonDescription ='人物描述',其中personid = 18
运行此更新后,它立即执行。这一切都很好但是当这个更改进入生产时,那么这个表有一百万个记录,所以登录的每个人都会在运行时超时。任何人都可以告诉我如何防止这种情况。是否还有其他需要运行的脚本等。运行更新后,我看到Statman在sqlserver上运行,这是花费时间的。
感谢 尼尔
答案 0 :(得分:0)
我认为问题是由SQL服务器计算它是否应该将数据存储在blob或行中。
请参阅:Using varchar(MAX) vs TEXT on SQL Server
“VARCHAR(MAX)类型是TEXT的替代。基本区别在于TEXT类型总是将数据存储在blob中,而VARCHAR(MAX)类型将尝试直接在行中存储数据,除非它超过了8k的限制,并且在那时它将它存储在一个blob中。“
您还使用全文索引吗?禁用索引,更新,重建索引。
您是否尝试过创建新表并将记录复制到其中?你还有同样的性能问题吗?