sql - 为 varchar 或 varbinary 选择较大 MAX 值的缺点

标签 sql sql-server types varchar

创建 varchar 或 varbinary 列时选择较大的 max 值有什么缺点?

我正在使用 MS SQL,但我认为这也与其他数据库相关。

谢谢

最佳答案

这取决于在特定列中存储大量数据是否合理。

如果您声明的列永远无法正确存储大量数据(即员工的名字为 VARCHAR(1000)),您最终会遇到各种问题

  1. 许多(如果不是大多数)客户端 API(即 ODBC 驱动程序、JDBC 驱动程序等)都会在客户端上分配足够大的内存缓冲区来存储特定列的最大大小。因此,即使数据库只需存储实际数据,您也可能会大幅增加客户端应用程序使用的内存量。
  2. 您将无法从表定义中驱动数据验证规则(或传递有关数据的信息)。如果数据库允许 1000 个字符的名字,则每个与数据库交互的应用程序最终可能都会有自己的员工姓名长度规则。如果不通过在所有应用程序和表之间放置存储过程层来缓解这一问题,通常会导致各种应用程序具有不同的规则。
  3. 墨菲定律指出,如果您允许 1000 个字符,那么某人最终会在列中存储 1000 个字符,或者至少存储一个大到足以在一个或多个应用程序中导致错误的值(即没有人检查每个应用程序的员工姓名是否相同)字段可以显示 1000 个字符)。

关于sql - 为 varchar 或 varbinary 选择较大 MAX 值的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/475049/

相关文章:

python - Django 相交计数注释用于排序

mysql - 如果找到变量如何停止执行查询

sql-server - SQL Server 2014 CTP1 上的 MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT

mysql - 如何指定子字符串函数中给定符号的位置?

MySQL 查询优化三重联接与嵌套选择

c# - 将整数作为 varbinary 发送到 SQL 触发器

sql-server - 具有多个根节点的 SQL 2008 HierarchyID

haskell - 测试 Haskell 变量是否匹配用户定义的数据类型选项

haskell - 在 Haskell 中使数据类型成为 Show 的实例

types - 设计类图时图像的数据类型是什么?