SqlServer и nvarchar (max)

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

CREATE TABLE [dbo].[SAMPLETABLE] (  
[ID] [uniqueidentifier] NOT NULL,  
[FIELD1] [int] NOT NULL,  
[FIELD2] [nvarchar] (2000) NULL,  
[FIELD3] [nvarchar] (max) NULL,  
[FIELD4] [uniqueidentifier] NULL,  
[FIELD5] [int] NULL,  
[FIELD6] [nvarchar] (2000) NULL,  
[FIELD7] [varbinary] (max) NULL,  
[FIELD8] [varbinary] (max) NULL,  
[FIELD9] [varbinary] (max) NULL,  
[FIELD10] [uniqueidentifier] NULL,  
[FIELD11] [nvarchar] (2000) NULL,  
[FIELD12] [varbinary] (max) NULL,  
[FIELD13] [varbinary] (max) NULL,  
[FIELD14] [bit] NULL,  
[FIELD15] [uniqueidentifier] NULL,  
[FIELD16] [varbinary] (max) NULL,  
[FIELD17] [bit] NULL,  
[FIELD18] [tinyint] NULL,  
[FIELD19] [datetime] NULL,  
[FIELD20] [nvarchar] (2000) NULL,  
PRIMARY KEY CLUSTERED   
(  
    [ID] ASC  
)
) ON [PRIMARY]  

GO

При таком дизайне таблицы и изменении nvarchar (2000) на nvarchar (max) будет ли это хуже (или лучше)? Не одобряет ли sqlserver такой дизайн?

5
задан HLGEM 2 February 2011 в 20:23
поделиться