- 19
- 0
- 约1.7千字
- 约 6页
- 2023-08-01 发布于北京
- 举报
子查询优化——子查询转换为连接
子查询优化是MySQL DBA必备的一个技能,原因如下:
MySQL对子查询的处理并不是很好,不能像Oracle一样可以改写子查询。
基于代价的查询优化器并不完善(在MySQL 5.7版本之后逐渐加强)。本章我们讲解几个子查询优化案例,让大家加深对子查询的印象。
案例中所使用的表及数据可以从/datacharmer/test_db下载。
问题现象
每日夜间对客户系统做备份时总是不成功,并导致整个系统不能正常运行,排查后发现是由于该备份操作与一条查询SQL语句发生了冲突。关于备份为何会与查询SQL语句冲突这里不做过多解释,我们主要分析整条SQL语句为何执行过慢。SQL语句结构如下:
这是一个很简单的子查询,但是在早期的MySQL版本(客户使用的是5.5版本)中对子查询的处理并不是先执行子查询,然后再与外表进行关联的,而是遍历employees(a) 表中的每一条记录,代入到子查询中。这条查询语句的执行计划如图38-1所示。
图38-1
从执行计划(关于执行计划详解,请参考本书下载资源中的“附录D”)上看,先执行的是b表,但是b表的select_type是“DEPENDENT SUBQUERY”,表示这个子查询依赖于外表查询,而不是先执行子查询。在MySQL早期版本中,对于in的操作子查询是不能展开的,但是在新版本中做了一些优化,可以将子查询展开。例如,
您可能关注的文档
- 常见的指数及其对应的指数基金.docx
- 掌握0-6个月宝宝的早教重点,在家也能给孩子进行早教.docx
- 0-3岁幼儿启蒙绘本推荐纯干货分享.docx
- MYSQL删除不存在的数据造成死锁.docx
- MYSQL并发删除数据造成死锁.docx
- Linux硬件和系统调优.docx
- 硬件规格常用查看命令详解.docx
- 系统负载常用查看命令详解.docx
- 分页查询优化.docx
- MYSQL插入意向锁死锁.docx
- 《gb-t 47438.2-2026危险化学品作业场所火灾报警与避难逃生特殊要求 第2部分:消防应急 (1).pptx
- 《gb-t 47438.4-2026危险化学品作业场所火灾报警与避难逃生特殊要求 第4部分:便携式报.pptx
- 《gb-t 47467-2026车联网安全管理接口规范》培训.pptx
- 《gb-t 47471-2026网络安全技术 sm9密码算法加密签名消息格式》培训.pptx
- 《gb-t 47374-2026航空用化学产氧器》培训.pptx
- 《GB-T 47438.3-2026 危险化学品作业场所火灾报警与避难逃生特殊要求 第3部分:可燃气.pptx
- 《GB-T 47438.5-2026危险化学品作业场所火灾报警与避难逃生特殊要求 第5部分:供电、传.pptx
- 《gb-t 47467-2026车联网安全管理接口规范》解读.pptx
- 《GBT 37820.4-2026船舶与海洋技术 船舶安全标志、防火控制图标志、安全提示和安全标记.pptx
- 《GBT 35275-2026 网络安全技术 SM2密码算法加密签名消息格式》培训.pptx
最近下载
- 物业管理日常设备维护难点及措施.docx VIP
- 《城市轨道交通 综合监控系统 技术规范》.pdf VIP
- 土地复垦质量控制标准td t1036 2013.docx VIP
- 红岩图书推荐.pptx VIP
- 2025至2030中国医用抽吸装置行业市场占有率及有效策略与实施路径评估报告.docx VIP
- 2025年陕西省高考物理试卷真题(含答案解析).docx
- 2026年成考专升本《政治》马克思主义哲学原理专项突破(二) 新考纲适用·含逐题解析.pdf
- 俄乌战争形势政策客观分析ppt模板.pptx VIP
- 吹皱的水波(课件)人教版(2024)美术二年级上册.pptx VIP
- 2026年中科大考试试题及答案.doc VIP
原创力文档

文档评论(0)