irpas技术客

Mysql 8.0 之 JSON_CONTAINS()_李大宝0829_json_contains mysql

网络 942

Mysql 8.0 之 JSON_CONTAINS() 8.0.24版本前存在mysql的一个bug:json索引不生效


问题描述: 通过测试,上线之后,发现网页某个推荐界面空白,查找原因之后发现有个接口响应超时,检查后不存在问题,对比测试与生产环境的sql结构也不存在问题,执行sql语句:

SELECT count(1) FROM table_xxx WHERE json_contains(字段名,"查询的值")

执行结果:

测试环境:零点几秒; 生产环境:几十秒没响应;


问题解决:

经过仔细对比发现测试环境数据为 8.0.25 版本,生产为 8.0.19 版本,其余各种配置及代码分支都一致;

最终在mysql的官方文档(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-24.html)的 bug fix 中找到了:

原来 json_contains 在 8.0.24 版本前 索引是没有生效 的。。。

更新生产的mysql版本至 8.0.25 解决;

(ps: 开发过程中尽量保证测试和生产环境的配置和库表结构以及版本一致)


json_contains() 用法:

json_contains(表中的字段名, “查询的值”);

json_contains(表中的字段名, “查询的值”, “$.json的key”);


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #json_contains #MySQL #80 #