2022-09-09 MySQL查询优化器

本文详细介绍了MySQL查询语句的执行过程,包括SQL输入、语法分析、语义检查、SQL优化和执行。重点讨论了逻辑查询优化和物理优化,如查询重写规则、启发式规则的应用、查询代价估算、单表扫描算法、索引和多表连接算法。此外,还分析了查询优化器与其他模块的关系,如与语法分析器、执行器、缓冲区、统计和索引的交互。
摘要由CSDN通过智能技术生成

注:由于查询优化器涉及面很广也比较复杂,本文主要来自书籍<<数据库查询优化的艺术: 原理解析和SQL性能优化>>

一、查询语句的执行过程简介

MySQL查询语句在数据库中的执行分为5个阶段,具体如下:

1.1 SQL输入

数据库接收用户输入的SQL语句,准备执行。

1.2 语法分析

对输入的SQL语句进行词法分析、语法分析,得到语法分析树。在这个阶段,输入的是一条SQL语句,输出的是一棵多叉树。

1.3 语义检查

根据语法树和系统的元信息进行语义检查,本阶段是对语法分析树进行逻辑判断,树的结构不发生变化。对语法分析树上的各个节点进行语义分析,判断对象是否存在、是否重名等,对不合语义的地方报告错误。

1.4 SQL优化

SQL优化通常包括两项工作:一是逻辑优化、二是物理优化。这两项工作都要对语法分析树的形态进行修改,把语法分析树变为查询树。其中,逻辑查询优化将生成逻辑查询执行计划。在生成逻辑查询执行计划过程中,根据关系代数的原理,把语法分析树变为关系代数语法树的样式,原先SQL语义中的一些谓词变化为逻辑代数的操作符等样式,这些样式是一个临时的中间状态,经过进一步的逻辑查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值