设置 varchar(8000) 的后果是什么?

Ale*_*huk 22 sql-server varchar

由于 varchar 占用的磁盘空间与字段的大小成正比,有什么理由我们不应该总是将 varchar 定义为最大值,例如varchar(8000)在 SQL Server 上?

在创建表上,如果我看到有人在做varchar(100)我应该告诉他们不你错了你应该做什么varchar(8000)

gbn*_*gbn 18

  • 长度是对数据的约束(如 CHECK、FK、NULL 等)
  • 行超过 8060 字节时的性能
  • 不能有唯一约束或索引(键列宽度必须 < 900)
  • 默认值为 SET ANSI PADDING ON = 可能存储大量尾随空格
  • SQL Server 将假设排序操作的平均长度为 4000,基于此分配内存(需要找到一个链接来备份它,但在我做的时候让我生锈:-)

总结:别这样。


小智 7

假设您指的是 SQL Server,我可以想到一个。

表中的行大小 (8K) 有限制,SQL 允许您定义理论上可能超过该限制的 varchar 字段。因此,如果用户在与此相关的字段中放入过多数据,则可能会出错。

从 SQL 2K8 开始,您可以超过此限制,但会影响性能

此外,还有一个完整的合理性检查,将大小限制为您期望数据的样子。如果你想要一个无限长度的字段,为什么不使用 text 或 ntext 呢?