2011-09-07 84 views
2

我正在使用SQL Server 2008 R2。VarChar的最大行大小(MAX)

我知道如果我有一個包含10個varchar(1000)列的表,並且實際上在這些列中放入了1000個字符,並嘗試插入該行,由於SQL Server的行限制爲8K,我將得到一個錯誤。但是,如果這些列被定義爲varchar(max),我會得到一個錯誤?

如果不是,那麼下面的情況如何: 我有8個varchar(1000)列,我最多加我有2個varchar(max)列所有在一個表中有一些字符在他們。我會收到錯誤嗎?

我認爲答案是否兩種情況下我都不會收到錯誤,但我需要確定。

回答

4

您的原始假設是因爲SQL服務器不正確2005

varchar(1000)情況下,最終會與存儲offrow某些列,所以沒有理由來聲明列2作爲varchar(max),而不是varchar(1000)只是爲了避免這種非存在的問題。

由於SQL Server需要遵循指針從數據頁面到離行頁面,因此如果您希望這是一種常見情況,您可能會考慮以某種方式垂直分區表,但是存儲數據時存在性能開銷。

+0

我使用varchar(max)很多很長的描述列,我不想限制用戶可以選擇鍵的字符數量。我不知道他們中的任何一個已經超過了8K,但是我沒有注意到任何性能問題。我想大多數的性能開銷是如果你真的有> 8K的列。感謝你及時的答覆。 –