在SQL Server中,我们可以指定字段类型varchar(n):
存储大小是输入数据的实际长度(以字节为单位),而不是n个字节.
通常在规划数据库结构时,我会尝试想象存储在这些varchar字段中的字符串的最大可能长度,然后设置该想象的大小+ varchar字段的一些备份.有时可能会发生最初提供的空间不足以进行现场,然后我需要增加长度.
但实际上,是否值得将该varchar领域限制在一定的价值范围内,而不仅仅是设置类似的东西varchar(5000),甚至varchar(max)是100%适合这种情况的东西?当我限制该n长度时,SQL Server或索引组织中的页面组织是否有任何优势?
更新
这就是我的意思(优势):https://stackoverflow.com/a/5353196/355264
是的,查询优化器可以猜测页面中有多少行,如果你有很多大于必要的varchar字段,SQL Server可以在内部猜测错误的行数.
以上是真的吗?还有其他优点吗?
mar*_*c_s 19
首先,您不能索引任何超过900字节的列.
仅此一项(对我而言)是反对一直使用varchar(5000)(或varchar(max))的杀手标准,即使不需要......
使用合适的尺寸.
另外:varchar增加至少2个字节的开销,因此对于10个字符或更少的字符串,我总是建议使用char(n).
char(5)将使用5个字节的存储 - 总是.varchar(5)使用2到7个字节的存储空间.
Jeo*_*uan 15
MS SQL Server存储varchar(8000)并且与varchar(MAX)不同.
如果[行外的大值类型]设置为OFF,则MAX类型从表的数据页移出到自己的数据页中的大小现在固定为8,000字节.
使用varchar(n)而不是varchar(MAX)有几个原因
性能
varchar(n)更快 http://rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn/
索引
可以索引varchar(900)和更小的索引,但不能索引varchar(MAX)或varchar(901)
兼容性
MS SQL Server Compact Edition不支持varchar(MAX)
| 归档时间: |
|
| 查看次数: |
25375 次 |
| 最近记录: |