我們目前正在考慮將字符串列設置爲nvarchar(max)
,而不是指定特定的長度以防止數據庫中沒有足夠空間存儲字符串的問題。林只是想知道這是一件好事,或者它可以導致任何問題,因爲它可以做,那麼爲什麼指定一個長度,如nvarchar(10)
,而不是nvarchar(max)
。我們也使用varbinary(max)
很多,因爲我們不知道我們需要多少二進制數據,所以我不知道這是一個效果多少,或者讓我們的插入速度沒有我認爲應該的那麼快。這是一個示例表:SqlServer和nvarchar(最大)
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是否對這樣的設計皺眉頭?
你存儲什麼樣的數據?唯一的*問題*將是索引,搜索和約束。儘管如此,這並不是一個好主意。 – Matthew 2011-02-02 17:57:16
**請不要這樣做!**如果我在一個擁有這樣的桌子的地方被僱用,我會跑出大門!然後,在所有nvarchar(max)列yuck頂部添加聚簇uniqueidentifier PK。你正在殺死你索引數據的能力。不久的將來,你會回過頭來問一個關於你的查詢運行速度如此緩慢的問題,並且不會有太多的事情可以加快速度。當天,所有主流/流行語言都是強類型的,但現在還沒有那麼多。如果你嘗試在數據庫中使用「那個」柺杖,你會遇到問題。 – 2011-02-02 19:40:21
@KM如果可以的話,我會百萬次提出你的評論,這是可怕的數據庫設計。 – HLGEM 2011-02-02 20:24:09