SR0009:避免使用變數長度大小為 1 或 2 的型別

RuleId

SR0009

分類

Microsoft.Design

中斷變更

中斷

原因

可變長度的一個或多個資料型別,具有 1 或 2 的長度。

規則描述

當您使用 VARCHAR、NVARCHAR 和 VARBINARY 等可變長度資料型別時,會造成額外的儲存成本,來追蹤儲存在資料型別值的長度。 此外,可變長度的資料行都儲存在所有固定長度資料行的後頭,這樣具有效能含意。

注意事項注意事項

如果您宣告可變長度類型 (例如 VARCHAR),但沒有指定長度,也會收到警告。 因為預設長度 (若指定) 是 1,所以會發生這個警告。

如何修正違規

如果型別的長度將會很小 (1 或 2 的大小) 與一致,請將它們宣告為固定長度的型別,例如 CHAR、NCHAR 和 BINARY。

隱藏警告的時機

您不應該隱藏這項警告。

範例

這個範例顯示兩個資料表的定義。 第一個資料表宣告可變長度為 2 字串。 第二個資料表會改為宣告固定長度的字串,以避免警告訊息。

CREATE TABLE [dbo].[TableWithWarning]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT,
[c3] INT,
[SmallString] VARCHAR(2)
)
ON [PRIMARY]

CREATE TABLE [dbo].[FixedTable]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT,
[c3] INT,
[SmallString] CHAR(2)
)
ON [PRIMARY]

長度可變之型別的資料,在實體上會儲存在長度固定之型別的資料的後面。 因此,如果您在非空的資料表中將資料行從變數變更為固定長度,將導致資料移動。

請參閱

概念

分析資料庫程式碼以改善程式碼品質