回答

1

您應該爲每個要限制長度的屬性定義最大長度。請注意,nvarchar(max)數據類型與nvarchar(n)數據類型不同,其中n是1-4000的數字。當您定義沒有最大長度時,您獲得的max版本適用於大型文本塊,如段落等。它可以處理非常大的長度,因此數據將與記錄的其餘字段分開存儲。另一方面,nvarchar(n)與其餘行保持內聯。

這可能是最好的了,現在就設置這些值,而不是等到稍後再做。選擇和你需要的一樣大的值,所以你永遠不必增加它們。 nvarchar(n)高效地存儲其信息;例如,nvarchar(200)不一定佔用200個字符的空間;它只使用足夠的空間來存儲實際放入的內容,並且還需要額外的幾個字節來保存其長度。

因此,只要有可能,您應該對實體的文本字段設置限制。

+0

據我所知,重要的推論是nvarchar(max)由於其不同而不能用作關鍵字。所以任何可能是關鍵的東西都需要不同的價值。 – glenatron 2012-09-18 15:08:00

0

NVARCHAR - 是可變長度字段。所以它只消耗你需要的空間。另一方面,NCHAR按照NVARCHAR的要求分配所需的所有空間。 MSDN建議在列數據條目的大小可能差異很大時使用nvarchar。 在項目的早期階段,這是我走的路。您可以在需要時調整它。

+0

nvarchar(#)和nvarchar(max)之間存在非常大的差異。前者是你正在談論的領域。後者是一個不同的野獸,更像舊的文字。 – 2012-04-27 02:33:28

0

根據下一個博客post在實際值大小未達到4000個符號(因爲限制爲8K,並且每個字符使用兩個字節)之前,nvarchar(max)與ntext不同。只要它達到這個尺寸,它的行爲幾乎與ntext相同。至於我,我沒有看到有任何理由避免使用nvarchar(max)數據類型。

相關問題