Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 nvarchar(MAX)  [new]
Ммук
Guest
Здравствуйте.

Подскажите: Имеется таблица для построения дерева нод (документы: разделы/подразделы/и т.п.) с неограниченным вложением:

Id [bigint]
ParentId [bigint]
Name [nvarchar(150)]
Text [nvarchar(MAX)]

Т.е. в одной таблице хранятся все ноды и по отношению Id-ParentId строится иерархическая структура.
Документов достаточно много и структуры могут быть большими - несколько тысяч нод. Текст может быть и 1 кб, а может и десяток -другой Мб.
Некоторые ноды являются исключительно контейнерами (15-25%) - имеют Name и пустое поле Text.


Вопрос: стоит-ли выносить поле Text в отдельную таблицу?

Спасибо.
7 июл 15, 23:30    [17865158]     Ответить | Цитировать Сообщить модератору
 Re: nvarchar(MAX)  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Ммук
Text [nvarchar(MAX)]

Текст может быть и 1 кб, а может и десяток -другой Мб.
Вопрос: стоит-ли выносить поле Text в отдельную таблицу?


Не стоит. Когда размер содержимого поля Text привысит 8Кб, оно будет автоматом вынесено в LOB allocation unit из IN_ROW allocation unit'a, при этом в строке будет ссылка.
8 июл 15, 02:02    [17865371]     Ответить | Цитировать Сообщить модератору
 Re: nvarchar(MAX)  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Ммук,

может xml?
8 июл 15, 02:04    [17865374]     Ответить | Цитировать Сообщить модератору
 Re: nvarchar(MAX)  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
автор
Когда размер содержимого поля Text привысит 8Кб


заменить на

автор
Когда размер строки превысит 8Кб, Text будет вытеснен в LOB AU, а Name вылетит в ROW_OVERFLOW AU. Кто-то раньше из них, кто-то позже... но вылетят. А в строке будут(ет) ссылки(а)
8 июл 15, 02:08    [17865378]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить