我有一个包含TEXT
列的大表。我使用以下语句将列更改为VARCHAR(MAX)
:
ALTER TABLE MyTable
ALTER COLUMN Details VARCHAR(MAX)
我读到TEXT
和新等价VARCHAR(MAX)
之间的区别在于,少于8k字符的记录在内部存储为纯文本而不是BLOB。
运行上述语句的时间不到一秒,所以我假设没有进行重组。 我想知道是否有任何存储过程或类似的东西这样做?
由于我的表中不到2%的记录有超过8k的字符,我想知道如果SQL Server会改变存储数据的方式,在选择Details列表时是否可以提高性能?!
答案 0 :(得分:1)
在更新现有行之前,实际存储不会更改。 我现在找不到任何证据链接,但它与text_in_row选项的工作方式类似。当你有一个带有文本列的表并决定更改表选项“text in row”(因此短字符串可以存储在行中)时,在更新现有行之前不会进行任何更改