讲师中心 微信公众号
AI工具推荐 视频效率加速

MySQL 5.7与MySQL 8.0执行计划有哪些区别

梦枫小哥_6009

梦枫小哥_6009

发布时间:2026-08-30 08:04:35

|

934人浏览过

|

来源于php中文网

原创

MySQL 5.7 升级到 8.0 后执行计划变差主因是统计信息过期(INNODB_TABLESTATS last_update 滞后)和优化器行为变更(如 index_merge 默认启用、filesort 策略调整、子查询物化逻辑变化),需通过 ANALYZE TABLE、补直方图、重建复合索引及合理配置 optimizer_switch 来修复。

mysql 5.7与mysql 8.0执行计划有哪些区别

MySQL 5.7 升级到 8.0 后执行计划变差,不是优化器“退化”,而是它开始认真看数据了——但你没给它看准的数据。

EXPLAIN 的 type 从 ref 变成 ALL 怎么办

这是最直接的信号:优化器误判了索引选择性。5.7 升级到 8.0 后,INNODB_TABLESTATS 表里的 last_update 时间仍停留在升级前,导致估算的 rows 严重偏离真实值。

  • 查证方式:SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS WHERE TABLE_NAME = 'your_table',看 last_update 是否早于升级时间
  • 交叉验证:SHOW INDEX FROM your_table 查 Cardinality,再对比 SELECT COUNT(DISTINCT your_col) FROM your_table;差 10 倍以上基本确认统计失真
  • innodb_stats_auto_recalc=ON 不是万能的——它只对单次变更超 10% 行数的表触发,冷表永远不动
  • 立刻执行:ANALYZE TABLE your_table

为什么 ORDER BY 突然走 Using filesort

8.0 默认启用更激进的内存排序策略,同时废弃了 max_length_for_sort_data,不再按字段长度切分排序模式。原来靠索引有序扫描的查询,现在一律走 filesort,一旦 sort_buffer_size 不够或字段太长,立刻写磁盘临时文件。

Smart Model Switcher V5
Smart Model Switcher V5

智能模型自动切换 V5.0.2 - 多模态感知,自动识别图片/视频/音频/代码/文本任务,切换最优模型。支持图片理解(qwen3-vl-plus)、视频音频(qwen3.5-plus)、代码(glm-5)、Office文档(MiniMax-M2.5)、推理等场景。零感知切换,无需手动操作。

下载
  • 判断是否真走索引排序:EXPLAIN 输出中 Extra 列不含 Using filesort 才算
  • 临时修复:补全复合索引,例如 WHERE a=1 ORDER BY b,c 就建 INDEX(a,b,c)
  • 别用 SELECT * 加剧恶化——字段越多,filesort 内存压力越大;可先试 SELECT a,b,c 看是否恢复

FORCE INDEX 失效,EXPLAIN 里冒出 using_index_merge

8.0.19+ 默认开启 index_merge=on,优化器会主动把多个单列索引“合并使用”,哪怕你写了 FORCE INDEX (idx_composite),它也可能无视并改走 idx_a,idx_b 合并路径。

  • 检查当前开关:SELECT @@optimizer_switch,确认其中 index_merge=on 是否启用
  • 临时禁用:SET SESSION optimizer_switch='index_merge=off';
  • 注意:index_merge 在多条件 OR 查询中常有收益,盲目关掉可能影响其他语句
  • 更稳方案:删掉冗余单列索引,保留覆盖性更强的复合索引

子查询从 DEPENDENT SUBQUERY 变成 MATERIALIZED 但反而更慢

8.0 默认启用 subquery_materialization_cost_based=ON,会尝试物化子查询。但若子查询含 LIMIT 或 GROUP BY,又会退回到物化临时表——而你从 SQL 看不出这个切换逻辑。

  • 确认是否真物化:EXPLAIN FORMAT=TREE 中出现 materialize 节点才算
  • 若物化后 rows 估算远低于实际(比如预估 1 行,实际 10 万行),说明直方图缺失或统计不准,ANALYZE TABLE 后仍需补直方图
  • 含 LIMIT 的 IN 子查询在 8.0 中大概率退化,改用 JOIN 或显式 STRAIGHT_JOIN 更可控
  • SELECT 列表里的标量子查询(如 SELECT (SELECT name FROM users WHERE id = o.user_id))仍不会自动物化,必须手动改写为 LATERAL 或派生表

真正要盯住的不是版本号,而是 EXPLAIN FORMAT=TREE 里有没有 materialize、Hash Aggregate 这类节点,以及它们的 rows 估算是否合理——否则提示再好,优化器也会绕开它。

热门AI工具

更多
咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2173

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1319

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

775

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2952

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4968

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1119

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5231

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4602

2023.08.14

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn