在创建 varchar 或 varbinary 列时为 max 选择较大值有什么缺点?
我正在使用 MS SQL,但我认为这也与其他数据库相关。
谢谢
在创建 varchar 或 varbinary 列时为 max 选择较大值有什么缺点?
我正在使用 MS SQL,但我认为这也与其他数据库相关。
谢谢
这取决于在特定列中存储大量数据是否合理。
如果您声明一个永远不会正确存储大量数据的列(即员工名字作为 VARCHAR(1000)),您最终会遇到各种问题
取决于关系数据库管理系统。IIRC,MySql 为 varchars > 255 个字符分配 2 字节开销(以跟踪 varchar 长度)。MSSQL <= 2000 将允许您分配大于 8060 字节的行大小,但如果您尝试插入或更新实际超过 8060 字节的行,则会失败。SQL 2005[1] 允许插入,但会为溢出分配一个新页面并留下一个指针。显然,这会影响性能。
[1] varchar(max) 有点特殊,但如果字段长度 > 8000 或行 > 8060,也会分配溢出页。这是 MSSQL 的默认值,行为会随着大类型而改变在数据行选项中。
如果大量数据以某种方式进入(例如来自外部接口)并且您的应用程序并非旨在处理它,您可能会增加破坏您的应用程序的风险。
作为一个好的设计,您应该始终将字段的大小限制为实际值。