[MySQL]对json字段中的数组创建索引

Mysql中在json字段里存放数组时,如果需要快速查找到包含某个数字或字符串的数组,则需要在这个数组上建立索引,其 multi-valued 索引能满足这种需求。

在已有表的情况下,执行以下语句创建一个数字数组索引

这个语句把json字段中的一个数组以无符号数组读出,并对每个数字进行索引,这样要寻找包含某数字的数组时,将使用索引提速。

接下来使用类似这样的语句查找拥有某个数字的数组所在的条目

或同时查找多个数字

使用了该索引后,作用在相关字段上的 JSON_OVERLAPS 函数也会使用索引。

 

要注意的是,如果数组不是像 {"group":[2,4]} 这样对象中的数组,而是字段中直接存放了一个数组 [2,4] 的话,索引不起作用,原因不详,但使用explain解析语句时候就是全表查询。

参考:https://dev.mysql.com/doc/refman/8.0/en/create-index.html



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

本博客使用Disqus评论系统,如果看不到评论框,请尝试爬墙。