问题描述
相同SQL在不同MySQL版本中查询相同数据的查询结果不一致,高版本8.0.32查询结果符合预期(查询有结果),低版本8.0.25查询结果不符合预期(查询无结果)。
分析:业务SQL包含用户自定义变量赋值,SQL在不同版本的执行计划不一样,推测可能受optimizer_switch的影响。
BUG定位
参考:https://bugs.mysql.com/bug.php?id=104918
简单理解: 子查询中有用户变量的情况,派生条件下推后,有时会影响子查询中用户变量的求值分配结果。
bug修复
bug 104918,在 MySQL 8.0.28修复。
参考:
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-28.html
http://dev.mysql.com/doc/refman/8.0/en/derived-condition-pushdown-optimization.html
bug规避
对于低于MySQL 8.0.28的版本,可以在特定sql中添加 /*+ NO_DERIVED_CONDITION_PUSHDOWN() */ ,在特定的查询中禁用derived_condition_pushdown优化。
全局地关闭 derived_condition_pushdown 可以在配置文件中添加 optimizer_switch='derived_condition_pushdown=off'
问题sql中添加 /*+ NO_DERIVED_CONDITION_PUSHDOWN() */ 禁用derived_condition_pushdown优化后,在MySQL 8.0.25 中出现了符合预期的正确结果。
编辑推荐:
- MySQL[bug] 子查询含用户变量,派生条件下推将导致不同版本的查询结果不一致03-01
- Windows下几个常用工具分享03-01
- 最简单、最详细的装系统教程,你get到了吗?03-01
- 你所不知道Linux下的chattr命令03-01
- Windows激活破解以及office安装破解03-01
- (端午节福利)各大影视VIP解析视频观看方法03-01
- Windows10系统盘清理实用攻略03-01
- 2018年比特币重现江湖03-01
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- MySQL[bug] 子查询含用户变量,派生条件下推将导致不同版本的查询结果不一致
- Windows下几个常用工具分享
Windows下几个常用工具分享
26-03-01 - 最简单、最详细的装系统教程,你get到了吗?
最简单、最详细的装系统教程,你get到了吗?
26-03-01 - 你所不知道Linux下的chattr命令
你所不知道Linux下的chattr命令
26-03-01 - Windows激活破解以及office安装破解
Windows激活破解以及office安装破解
26-03-01 - (端午节福利)各大影视VIP解析视频观看方法
(端午节福利)各大影视VIP解析视频观看方法
26-03-01 - Windows10系统盘清理实用攻略
Windows10系统盘清理实用攻略
26-03-01 - 2018年比特币重现江湖
2018年比特币重现江湖
26-03-01 - Windows环境下Python3安装
Windows环境下Python3安装
26-03-01 - 如何更好的使用搜索引擎“百度”(附电影福利)
如何更好的使用搜索引擎“百度”(附电影福利)
26-03-01
