首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >varchar(5)与varchar(5000)之差?

varchar(5)与varchar(5000)之差?
EN

Stack Overflow用户
提问于 2012-01-27 12:02:03
回答 2查看 29.9K关注 0票数 17

可能重复:

is there an advantage to varchar(500) over varchar(8000)?

在Server中,我们可以指定字段类型varchar(n)

存储大小是输入数据的实际长度(以字节为单位),而不是n字节。

通常,在规划数据库结构时,我试图想象存储在这些varchar字段中的字符串的最大可能长度,然后为varchar字段设置想象的大小+一些备份。有时可能会发生这样的情况:最初提供的空间对场地来说是不够的,然后我需要增加长度。

但实际上,是否值得将varchar字段限制为某个值,而不只是设置一些像varchar(5000)甚至varchar(max)这样的东西,这将100%地适合这种情况?当我限制n长度时,在Server中的页面组织或索引组织中有什么优势吗?

更新

以下是我的意思(优点):https://stackoverflow.com/a/5353196/355264

是的,查询优化器可以猜出一个页面中有多少行适合,如果您有很多超出需要的varchar字段,Server可以在内部猜测错误的行数。

上面说的是真的吗?还有其他好处吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-27 12:04:51

首先,不能对超过900个字节的列进行索引。

这一点(对我来说)一直是禁止使用varchar(5000) (或varchar(max))的致命标准,即使不需要.

使用适当的大小。

另外:varchar至少会增加2个字节的开销,所以对于10个字符或更少的字符串,我总是建议使用char(n)

char(5)将使用5字节的存储-始终如此。varchar(5)使用2到7个字节的存储。

票数 20
EN

Stack Overflow用户

发布于 2012-01-27 12:11:00

MS SQL Server存储varchar(8000),比varchar(MAX)更短。

如果将最大类型移出表的数据页并进入其自己的数据页,如果将大值类型设置为OFF,那么最大类型的大小现在固定为8,000字节。

  • http://www.fotia.co.uk/fotia/DY.13.VarCharMax.aspx

使用varchar(n)而不是varchar(最大)有几个原因

性能

varchar(n)是更快的http://rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn/

索引

varchar(900)和更小的索引可以被索引,但是varchar(最大)或varchar(901)或更大的索引不能被索引。

Compatibility

不支持varchar(最大)

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

https://stackoverflow.com/questions/9033000

复制
相关文章

相似问题

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