我有此查詢SQL Server 2008上Sql Server的行大小限制,表的設計
CREATE TABLE MediaLibrary
(
MediaId bigint NOT NULL IDENTITY (1, 1),
MediaTypeId smallint NOT NULL,
ImageNameByUser nchar(100) NULL,
GeneratedName uniqueidentifier NOT NULL,
UploadedByUserId uniqueidentifier NOT NULL,
UploadedDate date NOT NULL,
ProfilePhoto bit NOT NULL,
PublicPhoto bit NOT NULL,
AppointmentId bigint NULL,
OriginalImage nchar(1000) NULL,
ThumbImage nchar(1000) NULL,
MediumImage nchar(1000) NULL,
LargeImage nchar(1000) NULL,
UrlThumb nchar(1000) NULL,
UrlMedium nchar(1000) NULL,
UrlLarge nchar(1000) NULL,
InactiveReasonId smallint NULL,
InactiveDate datetime NULL
) ON [PRIMARY]
GO
當我試圖創建表我得到這個錯誤
創建或更改表「MediaLibrary」因爲最小行大小將是14273,包括9個字節的內部開銷。這超過了8060字節的最大允許錶行大小。
我知道我在行大小上達到了極限,但這不是一個大表,所以我想知道這是不是一個好的設計?
當我改變了nchar(1000)
到varChar(1000)
表保存的罰款。我擔心的是,一旦數據實際上被保存到表格中,我將再次達到行大小限制。
'的nchar(1000)'是一個**非常糟糕的主意** - 它會** **總是使用2000個字節的存儲空間 - 即使你只存儲「一」裏面。 'nchar(n)'是簡短的(最多3個,也許5個字符)字符串,例如。 ISO貨幣代碼等;但對於更長的文本片段,您應該**總是**使用'(n)varchar(x)'數據類型,它只存儲真正存在的內容! –