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