2010-01-25 4 views
157

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

Edit: Видимо, вопрос также относится к TEXT и IMAGE VS. varchar(max) и varbinary(max), для тех, кто ищет для этих типов данных позже.

ответ

170

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

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

+9

[SQL Server 2016] (https://msdn.microsoft.com/en-us/library/ms187993.aspx), по-видимому, по-прежнему будет поддерживать их. – Confluence

+1

@Confluence Исторически это текст и nText более старый тип данных, чем varchar и nvarchar, насколько они существуют в SQL Server? – RBT

36

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

10

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

+0

Я не понимаю, что они говорят, что идут с 'nvarchar (max)', но это ограничивает меня до 4000 символов. Что делать, если я хочу, чтобы поле занимало больше? – VoidKing

+1

nvarchar (max) не ограничивает вас 4000 символами. У вас есть неограниченное количество символов. Кроме того, текст и ntext устарели SQL Server. Это означает, что в будущей версии они больше не будут поддерживаться. –

+0

OIC, я использую SQL Server CE, который ограничивает мой 'nvarchar (max)' до 4000 символов. Поэтому для SQL Server Compact у меня нет выбора, кроме как использовать «ntext» в некоторых случаях. Когда они прекратят это, я полагаю, мне просто не нужно обновлять некоторые сайты. – VoidKing

4

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

27

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

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

Go nvarchar(max).

1

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

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

Смежные вопросы