nvarchar动态更改最大大小

时间:2013-08-26 21:25:15

标签: sql

我总是被SQL字符串列上需要最大长度所困扰。有一些数据没有真正的最大长度。例如,假设您有一个字段来存储某人的名字,并将其设为NVARCHAR(50)。总是有可能(虽然极不可能)有人的名字超过50个字符。

在运行中更改字段的最大长度是否可行?我的意思是,当你执行INSERT/UPDATE时,你会检查这个人的姓名是否超过50个字符,如果需要ALTER表,那么INSERT/UPDATE就可以ALTER。 (或者,如果需要,可以捕获异常并执行ALTER。)

如果表格中包含大量数据,NVARCHAR(100)会是一个缓慢的操作吗?

假设您将列更改为SELECT。此表中的NVARCHAR(100)会比您从一开始就{{1}}慢吗?

1 个答案:

答案 0 :(得分:2)

从使用nvarchar()开始,我猜你正在使用SQL Server。

在SQL Server中,我通常只创建varchar(255)(或nvarchar(255))这样的名称。这实际上是对2的幂(255 =最大8位无符号值)的亲和力的奇怪时代错误。但它在实践中运作良好。

在SQL Server中至少有两个注意事项。首先,字符串的最大“非最大”长度是8000个数据字节,即varchar(8000)nvarchar(4000)。这些也是合理的最大长度。

第二个考虑因素是索引中键的长度。最大长度为900字节。如果您在该字段上有索引,那么您不希望该字段长于此值。如果你有复合索引,那么255似乎是一个合理的长度。

然而,关键点在于,更改字段的长度可能会产生您没有想到的效果,例如索引上的效果。您不想轻易更改表的结构。相反,只需要开始超大的字段,完全忘记问题。