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