而关联子查询就需要循环迭代:
select from A where not exists (select 1 from B where B.x = a.x and ...) //关联子查询扫描 A 表的每一条记录 rA:扫描 B 表,找到其中的第一条满足 rA 条件的记录 。
显然 , 关联子查询的扫描成本会高于非关联子查询 。
我们希望 MySQL 能先"缓存"子查询的结果(缓存这一步叫物化,MATERIALIZATION),但MySQL 认为不缓存更快,我们就需要给予 MySQL 一定指导 。
...
可以看到执行时间变成了 0.67s 。
整理
我们诊断的关键点如下:
\1. 对于 information_schema 中的元数据表,执行计划不能提供有效信息 。
\2. 通过查看 MySQL 改写后的 SQL,我们猜测了优化器发生了误判 。
\3. 我们增加了 hint,指导 MySQL 正确进行优化判断 。
但目前我们的实验仅限于猜测,猜中了万事大吉,猜不中就无法做出好的诊断 。
关于mysql查询太慢怎么办和mysql查询慢的优化方案的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 心中有爱直播平台,心中有爱后面一句是什么
- 注册了公众号怎么取消吗,公众号注册后,如何取消信息
- 虚拟机怎么双开QQ,虚拟机怎么双开微信
- 财税知识公众号文章模板,财税公众号排名
- go语言风格代码 go语言代码生成器
- 包含html5uphexo的词条
- 欧洲古代战争即时战略游戏,欧洲古代著名战争
- 核酸pdf报告怎么查河南,核酸pdf报告怎么查河南的
- linuxsf下载命令的简单介绍