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
.