0

我有一张带一TEXT列的大桌子。我将该列更改为VARCHAR(MAX)使用以下语句:

ALTER TABLE MyTable
ALTER COLUMN Details VARCHAR(MAX)

TEXT我读到与新的等价物之间的区别在于VARCHAR(MAX),少于 8k 字符的记录在内部存储为纯文本而不是 BLOB。

运行上面的语句只用了不到一秒钟,所以我假设没有进行任何重组。我想知道是否有任何存储过程或类似的东西这样做?

由于我的表中只有不到 2% 的记录有超过 8k 的字符,我想知道如果 SQL Server 会改变它存储数据的方式,我是否可以在选择 Details 列时获得性能提升?!

4

1 回答 1

1

在您更新现有行之前,实际存储不会改变。我现在找不到任何证明链接,但它的工作方式类似于 text_in_row 选项。当您有一个带有文本列的表格并决定更改表格选项“行中的文本”(因此短字符串可以存储在行中)时,在您更新现有行之前不会进行任何更改

于 2017-05-10T14:38:30.183 回答