一 优化器在MySQL架构中的位置:

二 先看逻辑上的作用

一言以蔽之:找到最好的执行计划。

三 静态优化和动态优化

这个和一般的编译器优化的区别差不多,静态优化即语法上的转换,替换常量等等,动态优化则要考虑实时的运行状态,选择最优的执行路线。

四 优化器常见的工作

简单的表达式中进行常量的等价替换:

MIN MAX COUNT:

外连接转化为内连接:

这里有个补充的小知识,内连接 左外连接 右外连接 全外连接 自然连接在结果上的区别,和在MySQL执行引擎运算过程上的区别。

连接查询时,where条件中对于连接列的限制,将会对两张都起作用,这样无论以哪张表为基础进行连接运算,该限制条件都能起到过滤的作用:

IN 的优化:

我们先从OR来认识一下where字句的过滤作用:

这里先不看为主键(索引)的id,只将其看作普通的一列,OR的过滤作用是这样的:

先按 type的方式(上例中是走全表扫描)进行扫描,对每一条记录,用where条件去筛选即判断是否符合该条件。对于多个OR而言,其实就是遍历这个OR序列,有一个满足则将该记录加入结果集,故复杂度为O(n)。

而就如上面的文字截图所述,MySQL对IN做了优化,将IN内的数值进行大小排序,这样扫描到一条记录时,就不用顺序遍历地去判断该值是否存在,直接走二分查找,复杂度为log(n),当然,这个对于IN有很多值时二者的效率区别才会显现出来。

其他的还有,但是这里不再展开:

高性能MySQL(3th)(第六章 sql优化) —— 06 查询优化器的工作相关推荐

  1. sql优化之查询优化器

    本文大部分内容引用自代码搬运工.-MYSQL查询优化器 看本篇之前推荐看 innodb数据结构,缓冲区 熟悉数据库存数结构 MYSQL 逻辑结构 MySQL 使用典型的客户端/服务器(Client/S ...

  2. 高性能MySQL(3th)(第六章 sql优化) —— 01 减少冗余数据

    一 查询冗余的条数 如实际前台只需要TOP10,但是查询时使用 LIMIT 100. 解决方案:使用需要的大小限制.e.g. LIMIT 10,或者至多 LIMIT 20. 二 查询冗余的的列 避免使 ...

  3. 第七十六章 SQL命令 TOP

    文章目录 第七十六章 SQL命令 TOP 大纲 参数 描述 TOP int值 TOP和缓存查询 TOP和ORDER BY TOP 优化 TOP与聚合和函数 示例 第七十六章 SQL命令 TOP 指定返 ...

  4. MySQL之存储引擎及SQL优化

    6.Mysql的体系结构概念 整个MySQL Server由以下组成 Connection Pool:连接组件(接受客户端请求,进行认证授权后处理) Management Services & ...

  5. 第六章-Hadoop优化与发展

    第六章-Hadoop优化与发展 文章目录 第六章-Hadoop优化与发展 Hadoop探讨 HDFS HA HDFS Federation 资源调度框架YARN MapReduce1.0的缺陷 YAR ...

  6. 第四十六章 SQL函数 DAY

    文章目录 第四十六章 SQL函数 DAY 大纲 参数 描述 第四十六章 SQL函数 DAY 返回日期表达式的月份日期的日期函数. 大纲 DAY(date-expression){fn DAY(date ...

  7. 第六章 SQL命令 CREATE INDEX(一)

    文章目录 第六章 SQL命令 CREATE INDEX(一) 大纲 参数 描述 权限与锁 仅支持兼容性选项 索引名称 现有索引 表明 字段名称 嵌入对象中的字段(`%SerialObject`) 索引 ...

  8. 第十六章 SQL命令 CREATE TABLE(三)

    文章目录 第十六章 SQL命令 CREATE TABLE(三) 字段数据约束 NULL和NOT NULL UNIQUE DEFAULT DEFAULT Keywords ON UPDATE Colla ...

  9. 第十六章 SQL函数 ABS

    文章目录 第十六章 SQL函数 ABS 大纲 参数 描述 示例 第十六章 SQL函数 ABS 返回数值表达式的绝对值的数值函数. 大纲 ABS(numeric-expression){fn ABS(n ...

最新文章

  1. Python_summary
  2. Java连接open fire_java – 为什么我不能连接到openfire服务器?
  3. iview 下拉select样式_Vue.js相关:iview实现select tree树形下拉框的示例代码
  4. mysql标准时间,MySQL时间设置
  5. 【排序算法】计数排序
  6. Linux 2.6.39.1 Hello world 驱动总结
  7. 困惑我半年的一个问题终于解决了
  8. KVM详解(三)——KVM创建虚拟机
  9. 百度地图API学习之路(1)
  10. element-UI级联选择器的使用Cascader
  11. python题目-青蛙跳井口
  12. 论文写作中Word设置公式居中编号右对齐保姆级教程
  13. Python之利用marshmallow实现序列化与反序列化
  14. UVA 202 - Repeating Decimals(模拟)
  15. 百度糯米猴年初一夺冠  协同创新三大法器赢得漂亮
  16. C语言pixel函数小程序,C语言 getpixel()用法及代码示例
  17. 前端实现从视频中抽离出音频
  18. 第7章:OFDM 信道估计与均衡(4)
  19. iphone - - 怎么导出ipa文件
  20. 每日一练 JS30天挑战 数组操作实例

热门文章

  1. Geany文本编辑器
  2. 清华大学计算机系人才流失,清华教授直言:博士名额稀缺,人才流失和人才供给不足问题突显!...
  3. 问题求解与实践-简单数值计算
  4. 婚礼常用背景音乐[推荐100首
  5. 敬业签安卓手机便签文本中英文翻译功能如何使用?
  6. 练习:二元逻辑回归实现
  7. 演进分组系统的几个概念 EPS/EPC/SAE/LTE/EUTRAN
  8. 直流屏的作用及其工作原理
  9. sdk更新后,eclipse找不到模拟器
  10. vue项目PC兼容移动端