SR0005:请避免在 LIKE 谓词中使用以“%”开头的模式

规则 ID

SR0005

类别

Microsoft.Performance

是否重大更改

非重大更改

原因

WHERE 子句的 LIKE 谓词以通配字符“%”开头。

规则说明

如果使用 WHERE 子句,该子句包含 LIKE 谓语(例如 '%pattern string')来搜索可在列中任意位置出现的文本,则会引起表扫描。

如何解决冲突

若要解决此问题,应更改搜索字符串,以便不以通配符 (%) 开头,否则应创建全文索引。

何时禁止显示警告

如果几乎不使用引起此警告的语句或表永远不会包含几行以上,则可以禁止显示此警告。

示例

在第一个示例中,SELECT 语句将导致表扫描,因为搜索字符串以通配符开头。 在第二个示例中,该语句将导致索引查找,因为搜索字符串没有以通配符开头。 索引查找仅检索匹配 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%' 

请参见

概念

分析数据库代码以提高代码质量