数据库
背景
在业务数据中,为了方便大数据检索和用户画像分析,都会增加tag 标签,而json array 字段类型是最适合这类数据的,当然也可以使用多对多的关系表,然后加索引,但是在查询是需要join,为了个tag查询,往往也是得不偿失,然而使用JSON_CONTAINS 查询如何才能加索引呢?
解决方案
增加索引
CREATE INDEX tag_json_index ON biz_article ( (CAST(tags AS char (200) ARRAY)) );
查看效果
explain SELECT * FROM biz_article WHERE JSON_CONTAINS(tags->'$', JSON_ARRAY("java"));
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | biz_article | null | range | tag_json_index | tag_json_index | 83 | null | 1 | 100 | Using where |