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