You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.26中为JSON数组列的leagueId字段创建索引可行吗?

针对JSON数组中的leagueId字段创建索引的可行性(MySQL 8.0.26)

可行,但无法直接对JSON数组内的leagueId字段创建普通索引,需借助MySQL 8.0.14及以上版本支持的**多值索引(Multi-Valued Index)**实现,你的8.0.26版本满足要求。

具体实现步骤

  1. 创建多值索引
    假设你的表名为your_table,存储JSON数组的列名为json_data,执行以下SQL创建索引:
ALTER TABLE your_table
ADD INDEX idx_league_ids ((CAST(json_data->>'$[*].leagueId' AS UNSIGNED ARRAY)));
  • json_data->>'$[*].leagueId':提取JSON数组中所有元素的leagueId值,返回一个JSON数组
  • CAST(...) AS UNSIGNED ARRAY:将提取出的JSON数组转换为无符号整数数组类型,用于创建多值索引
  1. 使用索引查询
    创建索引后,以下两种常见查询都会触发索引优化:
  • 检查特定leagueId是否存在于数组中:
SELECT * FROM your_table
WHERE 1078 MEMBER OF(json_data->>'$[*].leagueId');
  • 使用JSON_CONTAINS查询包含指定leagueId的记录:
SELECT * FROM your_table
WHERE JSON_CONTAINS(json_data, '{"leagueId": 1078}', '$');

补充说明

如果你的查询场景更复杂,也可以考虑用JSON_TABLE将JSON数组展开为行,再配合普通索引,但多值索引是针对JSON数组场景更直接高效的方案。

内容的提问来源于stack exchange,提问作者JustinCredible

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:52:10