原标题:MySQL查询优化器的概念和原理整个执行过程

什么是MySQL的Query Optimizer

专门负责优化SELECT语句的优化器模块MySQL Query Optimizer通过计算分析收集的各种系统统计信息,为Query给出最优的执行计划——最优的数据检索方式。

MySQL Query Optimizer预处理

当MySQL Query Optimizer接收到Query Parser(解析器)传递过来的Query时,会根据MySQL Query语句的相应语法对该Query进行分解分析,同时还会做很多其他的计算转化工作,如常量转化,无效内容删除,常量计算等。

MySQL Query Tree

MySQL Query Tree以Tree类型的数据结构存放数据处理的流程,指明了完成Query须要经过的步骤,每一步的数据来源在哪里,处理方式是怎样的。MySQL使用了LEX和YACC语法(词法)分析工具生成MySQL Query Tree。

MySQL Query Optimizer的所有工作都是基于Query Tree进行的。

MySQL Query Optimizer是Cost Base Optimizer(CBO)+Heuristic Optimize(启发式优化)的过程

MySQL Query Optimizer优化Query是按照数据库的元信息、系统统计信息和某些特定的规则进行的。在CBO的实现中增加了部分RBO(Rule Base Opttimizer),以确保在某些特殊场景下控制Query按照预定的方式生成执行计划。

MySQL Query Optimizer的执行过程

客户端向MySQL发送Query请求,命令解析器模块完成请求分类,把SELECT Query转发给MySQL Query Optimizer,MySQL Query Optimizer首先会对整条Query进行优化,进行常量表达式的预算,直接换算成常量值。并对Query中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等。然后分析Query中的Hint信息(如果有),看Hint信息是否可以完全确定该Query的执行计划。如果没有Hint或Hint信息还不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据Query进行相应的计算分析,最后得出执行计划。返回搜狐,查看更多

责任编辑:

mysql优化器分析器_MySQL查询优化器的概念和原理整个执行过程相关推荐

  1. mysql 优化器代码_Mysql查询优化器

    Mysql查询优化器 本文的目的主要是通过告诉大家,查询优化器为我们做了那些工作,我们怎么做,才能使查询优化器对我们的sql进行优化,以及启示我们sql语句怎么写,才能更有效率.那么到底mysql到底 ...

  2. mysql 优化器提示_Mysql查询优化器

    Mysql查询优化器 本文的目的主要是通过告诉大家,查询优化器为我们做了那些工作,我们怎么做,才能使查询优化器对我们的sql进行优化,以及启示我们sql语句怎么写,才能更有效率.那么到底mysql到底 ...

  3. MySQL优化系列9-MySQL控制查询优化器Hints

    备注:测试数据库版本为MySQL 8.0 文章目录 一.控制查询计划评估 二. 可切换的优化 三. 优化器的Hints 3.1 优化器Hints概述 3.2 优化器Hints语法 3.3 连接顺序优化 ...

  4. MySQL优化器_MySQL查询优化器

    MySQL优化器 MySQL架构图 讲到MySQL,就绕不开他的架构图.MySQL是一个经典的C/S架构.服务器这边分两层:第一层是Server层,第二层是存储引擎.Server层处理主要的业务操作流 ...

  5. mysql 优化器关联查询_MySQL 查询优化器(二)

    1.6多个查询字段(常量条件) 多个查询字段的查询处理逻辑如下所示: JOIN:prepare阶段 setup_tables():同1.1测试. setup_fields():同1.1测试. setu ...

  6. mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了

    优化器的作用: 我们知道,一条SQL语句,可以有很多执行方式,最后都返回相同的结果,而优化器的作用就是找到最好的执行计划. 一.RBO-基于规则的优化器(rule) 系统内置的一套硬编码规则,根据规则 ...

  7. MySQL优化filler值_MySQL 性能优化神器 Explain 使用分析

    简介 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 ...

  8. mysql优化和索引_mysql优化和索引

    表的优化 1.定长与变长分离 如 int,char(4),time核心且常用字段,建成定长,放在一张表: 而varchar,text,blob这种变长字段适合单放一张表,用主键与核心表关联. 2.常用 ...

  9. mysql优化 运维_MySQL运维---MySQL优化

    一.优化 1.优化的角度 2.优化的方向 3.数据库优化思路 4.MySQL优化介绍 5.优化工具介绍 二.操作系统优化 1.top命令 1)CPU 2)内存 3)slab分配器---Linux内存 ...

最新文章

  1. 业界干货 | 图解自监督学习,从入门到专家必读的九篇论文
  2. 替 ASP.NET 的 Table 控件換裝
  3. LaTex:算法排版
  4. 人民日报智慧媒体研究院与第四范式合资成立智媒新创 赋能智慧媒体创新
  5. javaweb学习总结(三十八)——事务
  6. 【Apache】 配置 (http协议的) vhost
  7. 我也来推荐一个强大的flash应用
  8. QT计算机控制进程,Qt 学习之路 2(69):进程
  9. 使用git恢复未提交的误删数据
  10. 视觉SLAM——ORB-SLAM3运行本地视频文件
  11. 7Python全栈之路系列之Django表单
  12. mysql存储过程详解 mysql存储过程和函数
  13. 2019数字中国创新大赛西安(分区)、北京(分区) 决赛 观看总结
  14. Android Textview控件基础属性
  15. AllenNLP框架学习笔记(数据篇之一)
  16. Windows 11的临时文件清理工具
  17. html 选择列表框,列表框的selected属性
  18. Python Matplotlib 散点图的绘制
  19. 淘宝官方商品、交易、订单、物流接口列表
  20. linux修改文件夹属性,Linux修改文件/文件夹属性

热门文章

  1. Angular 依赖注入 UseClass 和 UseExisting 的区别
  2. 通过一个实际例子理解Angular rxjs Observable的异步行为
  3. 使用Java代码在SAP Marketing Cloud上创建Contact数据
  4. SAP Cloud for Customer Sales Lead明细页面视图的UI模型
  5. what is conversion exit defined in ABAP domain
  6. why is the configuration.js being loaded?
  7. SAP Fiori element框架smart control运行时的生成原理
  8. 使用report 打印category 03的IBASE hierarchy
  9. workaround for error message Table maintenance not allowed for table XXX
  10. SAP One Order redesign里的新CDS view