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

規則 ID

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%' 

参照

概念

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