使您的所有Sql Server 2008字符串列都为varchar(max)有任何问题吗?我允许的字符串大小由应用程序管理。该数据库应仅保留我提供的内容。通过将所有字符串列声明为SqlServer 2008中的varchar(max)类型,无论实际输入到它们中的数据大小如何,都会对性能产生影响吗?
慕盖茨4494581
浏览 1080回答 3
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)