3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
通過使用這種方法,VARCHAR(MAX)您基本上是在告訴SQL Server“將值存儲在此字段中的方式看起來最好”,然后SQL Server將選擇是將值存儲為常規(guī)值VARCHAR還是LOB(大對象)。通常,如果存儲的值小于8,000字節(jié),SQL Server會將值視為常規(guī)VARCHAR類型。
如果存儲的值過大,則列被獲準(zhǔn)在LOB頁灑掉的頁面,正是因?yàn)樗麄儗ζ渌鸏OB類型做(text,ntext和image) -如果發(fā)生這種情況,然后附加頁讀取需要讀取存儲在數(shù)據(jù)額外的頁面(即性能差),但這僅在存儲的值太大時(shí)才會發(fā)生。
實(shí)際上,在SQL Server 2008或更高版本下,即使使用固定長度的數(shù)據(jù)類型(例如VARCHAR(3,000)),數(shù)據(jù)也可能溢出到其他頁面上,但是這些頁面稱為行溢出數(shù)據(jù)頁面,并且處理方式略有不同。
簡短版:從存儲角度看,使用VARCHAR(MAX)over VARCHAR(N)for some 沒有缺點(diǎn)N。
(請注意,這也適用于其他可變長度字段類型NVARCHAR和VARBINARY)

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
索引的寬度不能超過900個(gè)字節(jié)。因此,您可能永遠(yuǎn)無法創(chuàng)建索引。如果您的數(shù)據(jù)少于900字節(jié),請使用varchar(900)。
這是一個(gè)缺點(diǎn):因?yàn)樗o
搜索效果真的很差
沒有獨(dú)特的約束
- 3 回答
- 0 關(guān)注
- 1116 瀏覽
添加回答
舉報(bào)