由于 varchar 占用的磁盘空间与字段的大小成正比,我们有什么理由不总是将 varchar 定义为最大值,例如varchar(8000)
在 SQL Server 上?
在创建表上,如果我看到有人在做,varchar(100)
我应该告诉他们不,你错了,你应该做什么varchar(8000)
?
由于 varchar 占用的磁盘空间与字段的大小成正比,我们有什么理由不总是将 varchar 定义为最大值,例如varchar(8000)
在 SQL Server 上?
在创建表上,如果我看到有人在做,varchar(100)
我应该告诉他们不,你错了,你应该做什么varchar(8000)
?
总结:不要这样做。
假设您指的是 SQL Server,我可以想到一个。
表中行的大小 (8K) 存在限制,SQL 允许您定义理论上可能超过该限制的 varchar 字段。因此,如果用户在与此相关的字段中放入过多数据,则可能会出错。
从 SQL 2K8 开始,您可以超过此限制,但会影响性能。
此外,还有将大小限制为您期望数据看起来的整体合理性检查。如果你想要一个无限长度的字段,为什么不使用 text 或 ntext 呢?
当然,这取决于现场存储的信息是什么?
由于多种原因,有些东西会有一个最大长度,如果必须有一个最大长度,那么这应该是你的字段的长度。
如果理论上没有最大长度,那么我会质疑为什么要使用 varchar。
我在 Oracle 数据库的背景下了解到,总是对数据库列使用最小的字段大小有一个缺陷。
当通过导入导出将数据从具有单字节排序的数据库移动到具有多字节排序的数据库(如 Oracle XE)时,字节长度可能会增加,并且将数据导入通过导入创建的表会失败。当然,Oracle 可以选择将 varchar2 长度定义为 char 或 byte。
我的观点是,总是尽可能小地定义字段并不总是明智的。我已经看到很多改变表来增加字段(由更改的要求引起)。
拥有 20% - 100% 未使用的字段是此处可讨论的选项。