首页 > 解决方案 > 快速将列 NVARCHAR(4000) 更改为 NVARCHAR(260)

问题描述

我在处理带有几NVARCHAR(4000)列的表时遇到了非常大的内存授予的性能问题。问题是这些列永远不会大于NVARCHAR(260).

使用

ALTER TABLE [table] ALTER COLUMN [col] NVARCHAR(260) NULL

导致 SQL Server 重写整个表,这是数十亿行,只是为了改变什么,不是一种选择。增加列宽没有这个问题,但减少它。

我已经尝试创建一个约束CHECK (DATALENGTH([col]) <= 520),或者CHECK (LEN([col]) <= 260)SQL Server 仍然决定重写整个表。

有没有办法将列数据类型更改为仅元数据操作?没有重写整个表的费用?

标签: sqlsql-server

解决方案


推荐阅读