В настоящее время мы стремимся установить для наших строковых столбцов значение 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 не одобряет подобные проекты?