次の方法で共有


SR0009: サイズが 1 ~ 2 の可変長の型を使用することは避けてください。

規則 ID

SR0009

分類

Microsoft.Design

互換性に影響する変更点

あり

原因

可変長のデータ型の 1 つ以上で、長さが 1 または 2 です。

規則の説明

VARCHAR、NVARCHAR、VARBINARY など、可変長のデータ型を使用すると、そのデータ型に格納されている値の長さを追跡するために、余分なストレージ コストがかかります。 また、可変長の列は固定長の列がすべて格納された後に格納されるため、パフォーマンスに影響を与えることがあります。

注意

さらに、VARCHAR などの可変長の型を宣言し、長さは指定しなかった場合、警告が表示されます。 長さを指定しなかった場合は既定で 1 の長さになるため、この警告が発生します。

違反の修正方法

その型の長さの値が小さく (サイズ 1 または 2)、一貫している場合は、CHAR、NCHAR、BINARY など、固定長の型として宣言します。

警告を抑制する状況

この警告は抑制しないでください。

使用例

この例は、2 つのテーブルの定義を示しています。 最初のテーブルでは、可変長の文字列に長さ 2 を宣言します。 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]

可変長の型のデータは、固定長の型のデータの後で、物理的に格納されます。 このため、空でないテーブルで列を可変長から固定長に変更すると、データが移動します。

参照

概念

データベース コードの分析によるコードの品質の向上