如何解决MySQL如何索引JSON数组?
我有一个带有一维数组的JSON字段。实际上,在此字段中,我列出了一些ID,例如:
[347470,162063,17315,346852,174776,295865,7833,136813]
在查询中,我会像这样引用此字段:
... AND JSON_CONTAINS(`users_actions`,174776)=0
我的问题是:我应该为此字段创建一个索引,如果是的话-应该使用哪个索引?
解决方法
如果您运行的是最新版本的MySQL(8.0.17或更高版本),则可以使用Multi-valued index,它是专门为此目的而设计的:
多值索引是在存储值数组的列上定义的二级索引。
[...]
多值索引旨在为
JSON
数组建立索引。[...]
在
WHERE
子句中指定以下功能时,优化器使用多值索引来获取记录:MEMBER OF()
,JSON_CONTAINS()
,JSON_OVERLAPS()
。
假设您的json数组存储在表myjs
的列mytable
中,则可以这样创建索引:
CREATE INDEX myidx
ON mytable ( (CAST(myjs AS UNSIGNED ARRAY)) );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。