0

我一直对 SQL 字符串列的最大长度需求感到困扰。有些数据没有真正的最大长度。例如,假设您有一个字段来存储某人的名字,并且您将其设为NVARCHAR(50). 某人的名字超过 50 个字符总是有可能(尽管可能性很小)。

动态更改字段的最大长度是否可行?我的意思是,当您执行 . 时INSERT/UPDATE,您会检查此人的姓名是否超过 50 个字符,ALTER如果需要,请在执行INSERT/UPDATE. ALTER(或者,如果需要,捕获异常并执行)。

ALTER如果表中有很多数据,操作会很慢吗?

假设您将列更改为NVARCHAR(100). 这张桌子上的 aSELECT会比你NVARCHAR(100)从一开始就做的慢吗?

4

1 回答 1

3

从使用来看nvarchar(),我猜你正在使用 SQL Server。

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

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

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

然而,关键点是更改字段的长度可能会产生您没有想到的影响,例如对索引的影响。您不想轻易更改表格的结构。相反,只要一开始就使字段过大,然后完全忘记这个问题。

于 2013-08-26T22:09:55.737 回答