Nvarchar (max) vs NText

В чем преимущества и недостатки использования типов данных nvarchar(max) vs. NText в SQL Server? Мне не нужна обратная совместимость, поэтому хорошо, что nvarchar(max) не поддерживается в более старых версиях SQL Server.

Изменить: По-видимому, этот вопрос также относится к TEXT и IMAGE vs. varchar(max) и varbinary(max) для тех, кто ищет эти типы данных позже.

Ответ 1

Преимущества в том, что вы можете использовать такие функции, как LEN и LEFT на nvarchar(max), и вы не можете сделать это против ntext и text. Также легче работать с nvarchar(max) чем text, где вам приходилось использовать WRITETEXT и UPDATETEXT.

Кроме того, text, ntext и т.д. устаревают (http://msdn.microsoft.com/en-us/library/ms187993.aspx)

Ответ 2

VARCHAR(MAX) достаточно большой, чтобы разместить поле TEXT. TEXT, NTEXT и IMAGE типы данных SQL Server 2000 будут устаревать в будущей версии SQL Server, SQL Server 2005 обеспечивает обратную совместимость с типами данных, но рекомендуется использовать новые типы данных, которые VARCHAR(MAX), NVARCHAR(MAX) и VARBINARY(MAX).

Ответ 3

ntext всегда будет хранить свои данные на отдельной странице базы данных, а nvarchar(max) попытается сохранить данные в самой записи базы данных.

Итак, nvarchar(max) работает несколько быстрее (если у вас текст меньше 8 кБ). Я также заметил, что размер базы данных будет расти немного медленнее, это тоже хорошо.

Go nvarchar(max).

Ответ 4

nvarchar(max) - это то, что вы хотите использовать. Самое большое преимущество заключается в том, что вы можете использовать все строковые функции T-SQL для этого типа данных. Это невозможно при ntext. Я не знаю никаких реальных недостатков.

Ответ 5

Самый большой недостаток Text (вместе с NText и Image) заключается в том, что он будет удален в будущей версии SQL Server, так как документации. Это значительно упростит вашу схему для обновления при выпуске этой версии SQL Server.

Ответ 6

Вы должны использовать nvarchar(max):

MSDN

Ответ 7

Я хочу добавить, что вы можете использовать предложение . WRITE для частичных или полных обновлений и высокой производительности, добавляя к типам данных varchar(max)/nvarchar(max).

Здесь вы можете найти полный пример использования предложения .WRITE.