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