次の方法で共有


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

RuleId

SR0009

カテゴリ

Microsoft.Design

互換性に影響する変更点

あり

原因

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

規則の説明

VARCHAR、NVARCHAR、VARBINARY などの可変長データ型を使用すると、データ型に格納される値の長さを追跡するために追加のストレージ コストが発生します。 また、可変長の列が固定長のすべての列の後に格納されるため、パフォーマンスに影響を及ぼす可能性があります。

Dd193263.alert_note(ja-jp,VS.90).gifメモ :

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]

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

参照

概念

スタティック分析によるデータベース コードの改善