got*_*tqn 10 clustered-index varchar sql-server-2012
我知道当使用VARCHAR(MAX)/NVARCHAR(MAX)
列时,数据被存储out of the row
- 数据行将有一个指向存储“大值”的另一个位置的指针。
我有以下问题:
out of the row
还是仅存储这些字段max
?clustered index
表的 来读取整个记录,那么存储在行外的字段是否也被读取?VARCHAR(MAX) 或 NVARCHAR(MAX) 被视为“大值类型”。大值类型通常存储在“行外”。这意味着...
Pau*_*ite 13
我知道当使用
VARCHAR(MAX)/NVARCHAR(MAX)
列时,数据存储在行外......
实际上,这取决于large value types out of row
选项的设置,可以使用sp_tableoption
. 从文档:
该默认是MAX
存储值在行,高达8000个字节,它们是否适合。除非您曾经sp_tableoption
更改过默认值,否则您的MAX
数据很可能会存储在行中。
也就是说,MAX
对于永远不会超过 8000 字节的值使用数据类型是一种糟糕的做法- 而是使用非 MAX 类型。除此之外,处理MAX
类型时的性能通常要差很多,因为 SQL Server 必须准备好处理可能高达 2GB 的数据。
每个字段是存储在行外还是仅存储最大字段?
只有MAX
那些。此外,如果先前在行中的MAX
列移出行,则仅该行中的该列会受到影响。它在行内被指向行外LOB
结构的指针替换。在某些情况下,非 MAX 列可能会移出行。
如果使用表的聚集索引读取整条记录,是否也读取了存储在行外的字段?
扫描聚集索引只遍历行内数据。如果查询需要行外数据,则使用行内指针进行查找。
归档时间: |
|
查看次数: |
424 次 |
最近记录: |