QA1004:EndsWith

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

属性

价值
RuleID QA1004
标题 EndsWith
类别 Performance

原因

查询使用 ENDSWITH

规则说明

ENDSWITH 效率低于基于前缀的匹配。 ENDSWITH 需要使用完整索引扫描,其成本可能比执行精确索引扫描的函数要 STARTSWITH高。 若要了解不同类型的索引扫描之间的差异,请参阅 索引概述

建议

如果比较逻辑允许,请创建并编制计算属性的索引,以反转字符串并使用 STARTSWITH 进行比较。

有关计算属性的详细信息,请参阅 计算属性

Example

原始查询:

SELECT * 
FROM c 
WHERE ENDSWITH(c.name, "xyz")

若要改进此查询,请首先创建并索引一个反转该属性的计算属性:

{ 
  "computedProperties": [ 
	{ 
		"name": "cp_reverseName", 
		"query": "SELECT VALUE REVERSE(c.name) FROM c" 
	} 
  ] 
}

然后使用以下更新的查询:

SELECT * 
FROM c 
WHERE STARTSWITH(cp_reverseName, "xyz")