QA1002:包含函数性能效果

当查询使用 CONTAINS 函数时,将返回此顾问消息。 该消息阐明了原因并提供改进查询性能的指导。

属性

价值
RuleID QA1002
标题 Contains
类别 Performance

原因

查询使用 CONTAINS 函数。

规则说明

CONTAINS 成本高昂且速度缓慢,因为它需要完全扫描。

建议

如果使用的意图 CONTAINS 是在字符串前缀上匹配,请 STARTSWITH 改用,这将执行精确的索引扫描,并且更具成本效益。

如果要执行不区分大小写的字符串搜索,请考虑改为定义和索引用于投影 LOWER(c.stringSearchProperty) 和使用区分大小写的字符串搜索的计算属性。

Example

原始查询:

SELECT * 
FROM c 
WHERE CONTAINS(c.category, "Historical")

查询的意图是搜索 category 该查询的 Historical开头。 在这种情况下,以下查询具有更好的计算属性 c.cp_category性能:

SELECT * 
FROM c 
WHERE STARTSWITH(c.cp_category, "historical")