使您的所有Sql Server 2008字符串列都为varchar(max)有任何问题吗?我允许的字符串大小由应用程序管理。该数据库应仅保留我提供的内容。通过将所有字符串列声明为SqlServer 2008中的varchar(max)类型,无论实际输入到它们中的数据大小如何,都会对性能产生影响吗?
3 回答
米脂
TA贡献1836条经验 获得超3个赞
通过使用这种方法,VARCHAR(MAX)您基本上是在告诉SQL Server“将值存储在此字段中的方式看起来最好”,然后SQL Server将选择是将值存储为常规值VARCHAR还是LOB(大对象)。通常,如果存储的值小于8,000字节,SQL Server会将值视为常规VARCHAR类型。
如果存储的值过大,则列被获准在LOB页洒掉的页面,正是因为他们对其他LOB类型做(text,ntext和image) -如果发生这种情况,然后附加页读取需要读取存储在数据额外的页面(即性能差),但这仅在存储的值太大时才会发生。
实际上,在SQL Server 2008或更高版本下,即使使用固定长度的数据类型(例如VARCHAR(3,000)),数据也可能溢出到其他页面上,但是这些页面称为行溢出数据页面,并且处理方式略有不同。
简短版:从存储角度看,使用VARCHAR(MAX)over VARCHAR(N)for some 没有缺点N。
(请注意,这也适用于其他可变长度字段类型NVARCHAR和VARBINARY)
慕桂英546537
TA贡献1848条经验 获得超10个赞
索引的宽度不能超过900个字节。因此,您可能永远无法创建索引。如果您的数据少于900字节,请使用varchar(900)。
这是一个缺点:因为它给
搜索效果真的很差
没有独特的约束
- 3 回答
- 0 关注
- 1079 浏览
添加回答
举报
0/150
提交
取消