SR0009:请避免使用可变长度大小为 1 或 2 的类型
规则 ID |
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]
固定长度数据类型后物理存储可变长度数据类型。 因此,如果在非空的表中将一个列从变量改为固定长度,则将导致数据移动。