在创建varchar或varbinary列时选择max值为max的缺点是什么?
我正在使用MS SQL,但我认为这也与其他dbs相关.
谢谢
这取决于在特定列中存储大量数据是否合理.
如果您声明一个永远不会正确存储大量数据的列(即员工名字作为VARCHAR(1000)),您最终会遇到各种问题
许多(如果不是大多数客户端API)(即ODBC驱动程序,JDBC驱动程序等)在客户端上分配大到足以存储特定列的最大大小的内存缓冲区.因此,即使数据库只需存储实际数据,您也可能会大幅增加客户端应用程序使用的内存量.
您无法从表定义中驱动数据验证规则(或传递有关数据的信息).如果数据库允许1000个字符的名字,那么与数据库交互的每个应用程序可能最终都有自己的规则来确定员工名称的大小.如果通过在所有应用程序和表之间放置存储过程层来减轻这种情况,这通常会导致各种应用程序具有各种规则.
Murphy定律指出,如果你允许1000个字符,有人最终会在列中存储1000个字符,或者至少有一个足以导致一个或多个应用程序出错的值(即没有人检查是否可以显示每个应用程序的员工姓名字段1000个字符).