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

开启MRR时MySQL查询返回错误结果的问题求助

MySQL 8.0.33 (macOS arm64) IN查询丢失存在记录的问题

问题现象

  • 将UAT环境(MySQL 8.0.31 Linux x86_64)的数据库导出并导入本地MySQL 8.0.33(macOS arm64)后,执行包含多个execution_element_id的IN查询时,部分已确认存在的记录(例如execution_element_id=107515)无法被返回。
  • 以下操作可使查询正常返回结果:
    • 单独查询该ID(例如SELECT * FROM your_table WHERE execution_element_id = 107515)
    • 为IN查询添加ORDER BY子句
    • 执行会话级命令关闭MRR优化:SET SESSION optimizer_switch='mrr=off'

环境差异与Bug状态

  • Windows 11 WSL环境下的MySQL 8.0.34未出现此问题。
  • 已向MySQL官方提交Bug,编号为112642。

临时解决方案

  1. 会话级临时修复:执行SET SESSION optimizer_switch='mrr=off',关闭当前会话的MRR优化,后续查询即可正常返回结果。
  2. 全局配置修改:若需要所有会话生效,可修改MySQL配置文件(my.cnf或my.ini),添加optimizer_switch='mrr=off',保存后重启MySQL服务。
  3. 调整查询语句:在受影响的IN查询末尾添加ORDER BY子句,强制改变查询执行计划。
  4. 版本升级:升级本地MySQL至8.0.34及以上版本(参考WSL环境无问题的版本),等待官方修复彻底解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:45:04