3 回答

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

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