Я ожидаю, что этот пост поможет вам.
http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx
Основные факты:
- По умолчанию TEXT и NTEXT хранят текстовое значение в структуре LOB
- По умолчанию NVARCHAR (MAX) сохраняет текстовое значение в структуре таблицы (если оно не превышает 8000 байт)
Когда вы изменяете столбец с TEXT / NTEXT на NVARCHAR (MAX), способ хранения данных не изменяется, он обновляет только метаданные таблицы. Структура данных изменяется только при следующем изменении значения. Это можно сделать сразу, запустив что-то вроде этого:
update mytable set mycolumn1 = mycolumn1
Если вы используете настройку параметров таблицы по умолчанию для NVARCHAR (MAX), то данные в вашей таблице будут больше.
- Вам нужно будет просмотреть настройки опций таблицы и условия, прежде чем изменить настройку на то, что соответствует вашим потребностям.
Размер вашей таблицы со временем сократится, если вы будете следовать за оператором alter table оператором update table.
Короче говоря, если вы запустите оператор update, что приведет к изменению хранилища структуры данных, размер вашей базы данных будет меньше, чем ожидалось.
РЕДАКТИРОВАТЬ : Поскольку вы упомянули TEXT, а не NTEXT, ваш выигрыш в космосе будет менее очевидным, чем вы думаете. NTEXT занимает вдвое больше места, чем TEXT, но в то же время следует ожидать, что NVARCHAR (MAX) займет примерно половину пространства, чем NTEXT. По моим подсчетам, вы увидите небольшие изменения по сравнению с исходным размером базы данных.
Специальный кредит для http://www.douglubey.com/