Максимальный размер строки с VarChar (MAX) - PullRequest
2 голосов
/ 07 сентября 2011

Я использую SQL Server 2008 R2.

Я знаю, если у меня есть таблица с 10 столбцами varchar (1000), и я на самом деле помещаю 1000 символов в каждый из этих столбцов и пытаюсь ВСТАВИТЬ эту строку, я получу ошибку из-за ограничения строки в SQL Server в 8 КБ. Однако, если эти столбцы определены как varchar (max), я получу ошибку?

Если нет, то как насчет следующего сценария: У меня есть 8 столбцов varchar (1000), которые я могу увеличить, плюс у меня есть 2 столбца varchar (max) на одной таблице с несколькими символами в них. Я получу ошибку?

Я думаю, что ответ "нет", я не получил бы ошибку в любом случае, но я должен быть уверен.

1 Ответ

4 голосов
/ 07 сентября 2011

Ваше первоначальное предположение неверно начиная с SQL Server 2005.

В случае varchar(1000) некоторые столбцы будут храниться отдельно, поэтому нет причин объявлять 2 ваших столбца как varchar(max), а не varchar(1000) только для того, чтобы избежать этой несуществующей проблемы.

При сохранении данных происходит перегрузка производительности, поскольку SQL Server должен следовать указателям со страницы данных на страницу вне строки, поэтому, если вы ожидаете, что это будет распространеноВ этом случае вы можете рассмотреть вертикальное разбиение таблицы каким-либо образом.

...