为降低处理半结构化数据的难度,提升查询效率,AnalyticDB for MySQL提供了半结构化数据检索功能,即JSON索引。本文主要介绍如何创建JSON索引。
JSON索引介绍
AnalyticDB for MySQL支持创建JSON索引。通过为存储在JSON列中的数据创建JSON索引,可以避免在查询数据时扫描全表数据或对整个JSON文档进行解析,从而提升数据查询效率。JSON索引主要适用于存储和查询复杂半结构化数据的场景,例如日志信息、配置文件、设备信息等。
注意事项
JSON索引的列数据类型必须为JSON。
一个JSON索引仅能包含一个JSON列。如需对多个列创建JSON索引,可创建多个JSON索引。
创建JSON索引
创建JSON索引时,您还需注意以下内容:
3.1.5.10及以上内核版本的集群,创建表后不会自动创建JSON索引,您需手动创建JSON索引。
3.1.5.10以下内核版本的集群,创建表后会自动为JSON列创建JSON索引。
创建表时创建JSON索引
注意事项
若您在建表时手动指定为某一列或某几列创建INDEX索引,AnalyticDB for MySQL不会再为表中其他列自动创建INDEX索引。
语法
CREATE TABLE table_name(
column_name column_type,
index index_name(column_name|column_name->'$.json_path')
)
DISTRIBUTED BY HASH(column_name);
参数说明
参数 | 说明 |
index_name | JSON索引名称。 重要 索引名称唯一,不能相同。 |
column_name|column_name->'$.json_path' |
|
建表语句的其他参数,请参见CREATE TABLE。
示例
为
json_test
表中的JSON列vj
创建JSON索引。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);
为已存在的表创建JSON索引
语法
ALTER TABLE db_name.table_name ADD KEY index_name(column_name|column_name->'$.json_path');
参数说明
参数 | 说明 |
db_name | 数据库名称。 |
table_name | 表名称。 |
index_name | JSON索引名称。 重要 索引名称唯一,不能相同。 |
column_name|column_name->'$.json_path' |
|
示例
为
json_test
表中的JSON列vj
创建JSON索引。ALTER TABLE json_test ADD KEY index_vj(vj);
为
json_test
表中JSON列vj
的属性键name
创建JSON索引。ALTER TABLE json_test ADD KEY index_vj_key(vj->'$.name');
相关文档
如何检索JSON数据,请参见JSON函数。
- 本页导读 (1)