mysql json字段添加多值索引后查询结果数量不对?
说明
- mysql: 8.0.28
- 数据表l2_set字段为存储id的json数组,如
[1,2,3]
问题
- 添加多值索引后查询结果不对
- json字段存储json数组时,json_overlaps 使用
column
和column->'$'
有什么区别?
关于问题2,查询结果是没有区别的,但是创建的多值索引不能互相命中
# 未添加多值索引:
# 3348 rows
select * from `orders` where json_overlaps(`l2_set`->'$', CAST('[34]' AS JSON)) and current_year='2023';
# 添加索引
alter table `orders` ADD INDEX l2_set_mmi((CAST(`l2_set`->'$' AS UNSIGNED ARRAY)));
# 查询
# 104 rows
select * from `orders` where json_overlaps(`l2_set`->'$', CAST('[34]' AS JSON)) and current_year='2023';
如果只是单字段 1,2,3 这种 为什么不用find_in_set 直接搜 存的逗号分隔字符数据 postsql 好像没有find_in_set函数