Есть ли смысл хранить байт в поле varchar(max) в данном случае?

Есть таблица с полями

  • ParametrId
  • Value [varchar(max)]

Поле Value может хранить разнотипную информацию, от 1 или 0, до большого текста.
Как резервируется память в поле varchar(max)?
Делают ли такую структуру, как указано выше?
(с одной стороны нет смысла выделять память, если хранить в ячейке 1 или 0, с другой стороны-надо хранить текст результата, который может быть длинным)
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Sumor
varchar(max) блобовский тип. В SQLServer он хранится в отдельном от основной записи месте и не включается в ограничение 8kb на запись. По памяти занимает 2 байта + размер хранимого значения. Лучше, кстати, хранить в nvarchar, так как всё-таки уже век юникода.
Если у вас данные до 4000 символов, лучше хранить в nvarchar(4000) - данных хранятся вместе с ключом.

Пока у вас нет миллионов записей и нет жёстких ограничений на размер БД не усложняйте и храните так, как удобно программно обрабатывать.
Ответ написан
Комментировать
igruschkafox
@igruschkafox
Специалист по сопровождению БД MS SQL
Как резервируется память в поле varchar(max)?

- varchar Ничего не резервирует - занимает столько место сколько надо для хранения данных
резервирует другой тип данных - char

Собственно говоря это одно из основных отличий этих типов данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы