2012-06-21 2 views
118

Я объявил столбец типа NVARCHAR(MAX) в SQL Server 2008, какими были бы его максимальные символы с MAX как длина?Каковы максимальные символы для NVARCHAR (MAX)?

+0

Возможный дубликат [Максимальное количество символов, которое будет удерживать nvarchar (MAX)?] (Https://stackoverflow.com/questions/4270049/what-is-the-maximum-number-of-characters- что-nvarcharmax-will-hold) –

ответ

247

Максимальный размер для столбца типа NVARCHAR(MAX) составляет 2 ГБ памяти.

С NVARCHAR использует 2 байта на символ, это ок. 1 миллиард символов.

Leo Tolstoj's Война и мир - это 1'440 страничная книга, содержащая около 600 000 слов - так что может быть 6 миллионов символов - хорошо округлено. Таким образом, вы можете хранить около 166 копий всей книги «Война и мир» в каждой колонке NVARCHAR(MAX).

Это достаточно места для ваших нужд? :-)

+47

И подумать, я думал, что майоры Comp Sci, которые взяли эту русскую литературу и должны были прочитать «Война и мир», зря теряли время – cost

+4

Просто выбор нит. Для большинства символов NVARCHAR использует 2 байта. Для символов Юникода над U + 00FFFF. Он будет использовать четыре байта. –

+6

отличный пример! действительно было полезно понять, что я могу сделать с 2 ГБ памяти. – alamin

35

По умолчанию значения nvarchar (MAX) хранятся точно так же, как значения nvarchar (4000), если фактическая длина не превышает 4000 символов; в этом случае данные в строке заменяются указателем на одну или несколько отдельных страниц, на которых хранятся данные.

Если вы ожидаете, что данные могут превышать 4000 символов, nvarchar (MAX) определенно является рекомендуемым выбором.

Источник: http://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

+6

Это также НЕ рекомендуется, если ваши данные никогда не будут превышать 4000 символов, поскольку есть проблемы с индексацией. – HLGEM

1

NVARCHAR [(п | макс)]

строка переменной длины Unicode данных. n определяет длину строки и может быть значением от 1 до 4000. max указывает, что максимальный размер хранилища составляет 2^31-1 байта (2 ГБ). Размер хранения в байтах, в два раза фактическая длина введенных данных + 2 байта

http://msdn.microsoft.com/en-us/library/ms186939.aspx

2

Я думаю, что на самом деле NVARCHAR (MAX) может хранить около 1070000000 символов.

+0

Можете ли вы объяснить, где вы получаете это число, и что вы подразумеваете под «точно»? (т. е. вы говорите, что это не жесткий предел, но с большим количеством символов могут возникнуть проблемы? Какие проблемы? Почему?) –

+2

Я не уверен, но я думаю, если nvarchar использует двойное пространство, чем varchar для хранения char, и максимальное количество памяти, которое может использоваться nvarchar (MAX) для хранения символов, составляет 2^31-1 => 2147483647, тогда 2147483647/2 равно 1073741824. Точно я имею в виду, что это не точное число. –

+3

@Francisco. Я думаю, вы имеете в виду приблизительно, а не точно. –

Смежные вопросы