假设有一个名为orders的表,其中包含一个名为data的JSON类型字段。我们想要为data字段中的customer.name路径创建索引,可以执行以下SQL语句:
CREATE INDEX idx_customer_name ON orders (JSON_EXTRACT_PATH(data, 'customer', 'name'));
要在JSON类型的字段上添加索引,您可以使用以下两种方法:
方法1:创建表时直接定义索引
例如,为json_test表中的JSON列vj创建一个索引:
CREATE TABLE json_test(
id int,
vj json,
INDEX idx_vj(vj)
) DISTRIBUTED BY HASH(id);
为json_test表中JSON列vj的属性键name创建JSON索引。
CREATE TABLE json_test(
id int,
vj json COMMENT,
index idx_vj_path(vj->'$.name')
)
DISTRIBUTED BY HASH(id);
方法2:对已存在表添加索引
对于已经存在的表,为vj整个列创建索引
ALTER TABLE json_test ADD KEY index_vj(vj);
为vj列中name属性创建索引
ALTER TABLE json_test ADD KEY index_vj_key(vj->'$.name');
更多关于JSON索引的细节和注意事项请参考文档。
此回答整理自钉群“云数据仓库ADB-开发者群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。