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