JSON字段添加索引
版本
mysql:5.7以上
添加索引语句
ALTER TABLE table_name ADD INDEX idx_mv_custinfo_list( ( CAST( 列名 -> '$[*].对应key' AS UNSIGNED array)) );
查询语句
假如查询的字段是custinfo ,json中含有id做为键
查询一个值
WHERE
94507 MEMBER OF ( custinfo -> '$[*].id' );
查询多个值
WHERE
JSON_CONTAINS(
custinfo -> '$[*].id',
CAST( '[94582, 94507]' AS JSON ));
或者
WHERE
JSON_OVERLAPS (
custinfo -> '$[*].id',
CAST( '[94477, 94582]' AS JSON ));
查看创建的索引
SHOW INDEX FROM table_name;
是否命中索引
EXPLAIN SELECT
*
FROM
table_name
WHERE
94507 MEMBER OF ( custinfo -> '$[*].id' );