在 JSON 路径上添加索引

通过 JSON 列中的某个值过滤或排序数据的查询通常使用全表扫描。

SELECT * FROM ProductCollection
WHERE JSON_VALUE(Data, '$.Color') = 'Black'

要优化这些类型的查询,可以添加公开过滤器或排序中使用的 JSON 表达式的非持久计算列(在此示例中为 JSON_VALUE(Data,’$ .Color’)),并在此列上创建索引:

ALTER TABLE ProductCollection
ADD vColor as JSON_VALUE(Data, '$.Color')

CREATE INDEX idx_JsonColor
ON ProductCollection(vColor)

查询将使用索引而不是普通表扫描。