前言:
创建索引的方式分为两种,CREATE index 和 ALTER TABLE;
被创建索引的关键字类型又分两种,数字(UNSIGNED)和字符串(char(128))
一、给json对象属性param_value(假如是长度128以下的字符串)创建索引
CREATE index `index_name` on `table_name `(( CAST(`json_column_name`->>'$.param_value' AS char(128) ARRAY)));
二、给json数组创建索引
1.给json数组里的对象属性param_value(假如是数字类型)创建索引
CREATE index `index_name` on `table_name `(( CAST(`json_column_name`->>'$[*].param_value' AS UNSIGNED ARRAY)));
2.也可以给json数组(加入存的是string)直接创建索引
CREATE index `index_name` on `table_name `(( CAST(`json_column_name`->>'$[*]' AS char(128) ARRAY)));
三、查询索引
查询,提供了三个查询函数
MEMBER OF() 数组中是否存在某一值(如果是唯一匹配查询建议用这种否则选下面两种)
JSON_CONTAINS() 数组中是否包含某些值,交集(必须都包含,此处注意mysql版本必须是8.024以上否则使用可能会失效)
JSON_OVERLAPS() 数组中是否包含某些值,并集(只要包含一个就行省的用JSON_CONTAINS一直OR)