gpt4 book ai didi

sql-server-2008 - varchar(max) 无处不在?

转载 作者:行者123 更新时间:2023-12-03 05:13:32 27 4
gpt4 key购买 nike

将所有 Sql Server 2008 字符串列设为 varchar(max) 是否有任何问题?我允许的字符串大小由应用程序管理。数据库应该只保留我给它的内容。在 Sql Server 2008 中将所有字符串列声明为 varchar(max) 类型是否会影响性能,无论实际进入其中的数据大小是多少?

最佳答案

通过使用VARCHAR(MAX),您基本上是在告诉 SQL Server“以您认为最好的方式存储此字段中的值”,然后 SQL Server 将选择是否将值存储为常规 VARCHAR 或作为 LOB(大对象)。 通常,如果存储的值小于 8,000 字节,SQL Server 会将值视为常规 VARCHAR 类型。

如果存储的值太大,则允许该列溢出页面到 LOB 页面,就像其他 LOB 类型(textntextimage) - 如果发生这种情况,则需要额外的页面读取来读取附加页面中存储的数据(即存在性能惩罚),但是只有在存储的值时才会发生这种情况太大了

事实上,在 SQL Server 2008 或更高版本下,即使使用固定长度的数据类型(例如 VARCHAR(3,000)),数据也可能溢出到其他页面,但是这些页面称为行溢出数据页,并且是处理方式略有不同。

简短版本:从存储角度来看,对于某些使用VARCHAR(MAX)相对于VARCHAR(N)没有任何缺点>N.

(请注意,这也适用于其他可变长度字段类型 NVARCHARVARBINARY)

仅供引用-您can't create indexes on VARCHAR(MAX) columns

关于sql-server-2008 - varchar(max) 无处不在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2091284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com