次の方法で共有


SR0005: LIKE 述語では "%" で始まるパターンの使用は避けてください

RuleId

SR0005

カテゴリ

Microsoft.Performance

互換性に影響する変更点

なし

原因

WHERE 句の LIKE 述語がワイルドカード文字 "%" で始まっています。

規則の説明

"%パターン文字列" などの LIKE 述語を含む WHERE 句を使用して、列の任意の場所で検出される可能性があるテキストを検索すると、テーブル スキャンが実行されることがあります。

違反の修正方法

この問題を解決するには、ワイルドカード (%) 以外の文字で始まるように検索文字列を変更するか、フルテキスト インデックスを作成する必要があります。

警告を抑制する状況

この警告が生成されたステートメントをほとんど使用しない場合、またはテーブルに数行しか行が含まれない場合は、この警告を抑制してかまいません。

使用例

最初の例では、検索文字列がワイルドカード文字で始まるため、SELECT ステートメントはテーブル スキャンを実行します。 2 番目の例では、検索文字列がワイルドカード文字で始まっていないため、ステートメントはインデックス シークを実行します。 インデックス シークでは、WHERE 句と一致する行だけが取得されます。

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

参照

概念

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