Які максимальні символи для NVARCHAR (MAX)?


Відповіді:


413

Максимальний розмір стовпця типу NVARCHAR(MAX)- 2 ГБ пам’яті.

Оскільки NVARCHARвикористовується 2 байти на символ, це приблизно. 1 мільярд символів.

Лева Толстой " Війна і мир" - це книга на 1440 сторінок, що містить близько 600 000 слів - так що може бути 6 мільйонів символів - добре закруглена. Таким чином, ви можете вставити близько 166 примірників всієї книги " Війна і мир" у кожну NVARCHAR(MAX)колонку.

Чи достатньо місця для ваших потреб? :-)


17
Лише нітровий вибір. NVARCHAR використовує 2 байти для більшості символів. Для unicode caracters понад U + 00FFFF. Він буде використовувати чотири байти.
Елі Алгранті

7
Це поза спартанське божевілля.
MisterGeeky

1
Що таке PostgreSQL еквівалентно NVCHAR (MAX)?
Pratik

63

За замовчуванням значення nvarchar (MAX) зберігаються точно так само, як і значення nvarchar (4000), якщо тільки фактична довжина не перевищує 4000 символів; у такому випадку дані про рядки замінюються вказівником на одну або кілька окремих сторінок, де зберігаються дані.

Якщо ви передбачаєте, що дані, можливо, перевищують 4000 символів, рекомендується вибрати nvarchar (MAX).

Джерело: https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/


12
Також НЕ рекомендується, якщо ваші дані ніколи не перевищуватимуть 4000 символів, оскільки виникають проблеми з індексацією.
HLGEM

Я вважаю, що це застаріло. Дивіться відповідь від @marc_s.
Фабіо

9

З документації MSDN

nvarchar [(n | max )]

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


6

Я думаю, що насправді nvarchar(MAX)може зберігатися приблизно 1070000000 знаків.


Чи можете ви пояснити, де ви отримуєте це число, і що ви маєте на увазі під «точно»? (тобто ви говорите, що це не важка межа, але з більшою кількістю персонажів можуть виникнути проблеми? Які види проблем? Чому?)
Аді Інбар

3
Я не впевнений, але думаю, якщо nvarchar використовує подвійний простір, ніж varchar для зберігання знаків, а максимальне число пам'яті, яке може використовувати nvarchar (MAX) для зберігання символів, становить 2 ^ 31-1 => 2147483647, то 2147483647/2 є 1073741824. Точно я маю на увазі, що це не точне число.
Франциско Хав'єр Ларіос Сото
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.