我目前正在处理一个表,该表有很多带有 varchar(50) 的列。我们现在必须在某些列中插入的数据超过 50 个字符,因此我们必须将这些列的列大小从 50 更改为 128,因为我们有很多列,更改单个列是浪费时间。
所以我向我的团队提议,我们为什么不将所有列更改为 varchar(128)。一些队友认为这会导致选择和加入操作期间的性能下降。
现在我不是数据库专家,但我不认为从 varchar 50 迁移到 varchar 128 会导致任何显着的性能下降。
PS - 我们在这些列中没有任何姓名、姓氏、地址类型的数据。
varchar(50)并且varchar(128)从每个角度来看都会表现得几乎相同。对于 50 个字符以下的值,存储大小相同。它们可以在没有类型转换问题的情况下互换地连接(varchar(50)连接varchar(128))(即,索引varchar(50)可以varchar(128)在连接中查找列)并且同样适用于 WHERE 谓词。在 SQL Server 2012 之前,增加varchar列的大小是一个非常快的仅元数据操作,在 SQL Server 2012 之后,此操作在某些条件下可能是一个缓慢的 size-of-data-update-each-record 操作,类似于描述的那些在添加一个可为空的列可以更新整个表。
任何列长度更改都可能引起一些问题:
varchar(50)在存储过程中声明为)varchar(50),扩展到varchar(128)将超过最大索引大小 900 并触发警告。Martin 关于内存授权增加的警告是一个非常有效的问题。如果这确实会成为一个问题,我会购买更多的内存。
| 归档时间: |
|
| 查看次数: |
11285 次 |
| 最近记录: |