首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中varchar(n)和varchar(m)的效率差异--这与varchar(n)和varchar(MAX)无关

SQL Server中varchar(n)和varchar(m)的效率差异--这与varchar(n)和varchar(MAX)无关
EN

Stack Overflow用户
提问于 2020-06-24 14:04:54
回答 1查看 193关注 0票数 0

如果我在Server中有一个列,我知道它通常大约是10个字符。让varchar(50)覆盖我的所有案例有什么坏处吗?varchar(n)varchar(n+x)之间在效率、存储、计算/查询拉力方面的任何损失

Note:这不是varchar(n)varchar(MAX)之间的比较。关于这一点,我们已经提出了另一个问题。

相关但不同的问题:sql server中varchar(500)与varchar(max)的区别

EN

回答 1

Stack Overflow用户

发布于 2020-06-24 15:01:51

是的,过度调整“以防万一”的可能导致性能问题,即内存授权太高,因为它们是基于假设每个值都是半填充的。

但这取决于你如何平衡这种影响和其他潜在问题:

  • 如果大多数/所有值都超过一半,使其“恰到好处”可能会导致内存授权太低。
  • 让它成为5X以防万一似乎很多,但想想业务需求会随着时间的推移而演变的可能性有多大。稍后更改列可能会造成更大的干扰;不仅要考虑列本身,还要考虑所有可能受到影响的参数和变量定义、索引、约束等,以及必须更改以适应较大字符串的应用程序代码。

您应该做什么取决于您对这将永远是varchar(10)有多大的信心。如果您不太自信,可以考虑将其设置为varchar(20)varchar(32),但将其限制在当前要求的10 (使用params插入过程和实际约束)。如果需求稍后发生变化,您只需删除约束,更改参数定义,然后应用程序就可以按照自己的速度进行更改,从而开始支持更长的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62556971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档