当查询在字符串比较中使用 UPPER 或 LOWER 函数时,将返回此顾问消息。 该消息阐明了原因并提供改进查询性能的指导。
属性
| 价值 | |
|---|---|
| RuleID | QA1006 |
| 标题 | UpperLowerComparison |
| 类别 | Performance |
原因
查询在 WHERE 子句中使用 UPPER 或 LOWER 字符串比较。
规则说明
UPPER 和 LOWER 确定性函数,但不使用该索引。 如果计划进行频繁的不区分大小写的比较,这些函数可能会消耗大量请求单位(RU)。
建议
定义大写或小写属性的计算属性,并定义计算属性的索引。
有关计算属性的详细信息,请参阅 计算属性。
Example
原始查询:
SELECT *
FROM c
WHERE LOWER(c.name) = "abc"
在 上创建计算属性 LOWER(c.name)
{
"computedProperties": [
{
"name": "cp_lowerName",
"query": "SELECT VALUE LOWER(c.name) FROM c"
}
]
}
索引 cp_lowerName 和使用以下更新的查询:
SELECT *
FROM c
WHERE cp_lowerName = "abc"