2013-11-26 8 views
13

Каковы общие различия в хранении и производительности между приведенными ниже двумя таблицами, если их единственная разница составляет nvarchar(50) против nvarchar(max), а строки в каждом поле варьируются от 1 до 50 символов? Это в SQL Server 2005.Последствия nvarchar (50) vs nvarchar (max)

ТАБЛИЦА 1

firstname nvarchar (50) 
lastname nvarchar (50) 
username nvarchar (50) 

Таблица 2

firstname nvarchar (max) 
lastname nvarchar (max) 
username nvarchar (max) 
+3

Прочтите эту статью [http://rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn/). –

+0

Другое сравнение: http://sqlhints.com/2013/03/10/difference-between-sql-server-varchar-and-varcharmax-data-type/ – NoChance

+0

@EmmadKарим в этой статье обсуждается varchar (8-битные кодировки), мой вопрос относится к nvarchar (совместим с unicode) –

ответ

22

Если у вас гарантировано наличие строк от 1 до 50 символов, тогда будет выполняться один и тот же запрос, проходящий через строки X-образной длины быстрее с использованием varchar (X) vs varchar (MAX). Кроме того, вы не можете создать индекс в поле varchar (MAX).

Как только ваши строки имеют значения длиной более 8000 символов, тогда есть дополнительные соображения производительности, с которыми можно бороться (строки в основном рассматриваются как TEXT вместо varchar (n)). Хотя это не очень важно для сравнения, поскольку для строк длиной более 8000 нет опции varchar (N).

+1

+1 для подробного объяснения. –

-3

NVARCHAR макс для колонн до 2 Гб. По сути, это требует больше ресурсов. Вам лучше использовать nvarchar (50), если вы знаете, что вам не понадобится столько места. каждый символ составляет около 2 байтов, а с 2 ГБ - 1 млрд символов ...

+1

Я думаю, вы неправильно поняли о ncarchar и nchar !!! –

5

Прежде всего, вы не сможете создавать индексы на столбцах (max) длины , Поэтому, если вы собираетесь хранить доступные для поиска данные, то есть, если эти столбцы будут частью предиката WHERE, вы не сможете улучшить производительность запросов. В таком случае вам может потребоваться рассмотреть FullText Search и индексы в этих столбцах.

+0

Это хорошее начало. Что еще вы можете подумать о том, что кто-то должен учитывать при принятии решения между nvarchar (n) и nvarchar (max)? –

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