IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL内核查询优化规则 -> 正文阅读

[大数据]MySQL内核查询优化规则

条件化简

移除不必要的括号

  • 原条件:((a = 5 AND b = c) OR ((a > c) AND (c < 5)))
  • 优化器会去掉括号:(a = 5 and b = c) OR (a > c AND c < 5)

常量传递(constant_propagation)

  • 原条件:a = 5 AND b > a
  • 优化器会变为常量:a = 5 AND b > 5

移除没用的条件(trivial_condition_removal)

  • 原条件:(a < 1 and b = b) OR (a = 6 OR 5 != 5)
  • 可以被简化为:a < 1 OR a = 6

常量表检测

  • 使用主键等值匹配或者唯一二级索引列等值匹配作为搜索条件来查询某个表,MySQL觉得这两种查询花费的时间特别少,少到可以忽略,
  • 原条件:SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2 WHERE table1.primary_key = 1;
  • 优化后:SELECT table1表记录的各个字段的常量值, table2.* FROM table1 INNER JOIN table2 ON table1表column1列的常量值 = table2.column2;

外连接消除

  • 内连接的驱动表和被驱动表的位置可以相互转换,而左(外)连接和右(外)连接的驱动表和被驱动表是固定的。
  • 原sql:SELECT * FROM e1 LEFT JOIN e2 ON e1.m1 = e2.m2 WHERE e2.n2 IS NOT NULL;
  • 等价于:SELECT * FROM e1 INNER JOIN e2 ON e1.m1 = e2.m2 WHERE e2.m2 = 2;

子查询优化

一些子查询的概念

  • 标量子查询:只返回一个单一值的子查询
  • 行子查询:返回一条记录的子查询
  • 列子查询:查询出一个列的数据的子查询
  • 表子查询:包含很多条记录的子查询
  • 不相关子查询:查询可以单独运行出结果,而不依赖于外层查询的值
  • 相关子查询:子查询的执行需要依赖于外层查询的值

标量子查询、行子查询的执行方式

  • 从外层查询中获取一条记录
  • 然后从上一步骤中获取的那条记录中找出子查询中涉及到的值

MySQL对IN子查询的优化

  • in的内容很少:直接内存中处理
  • in的结果集很多:物化表(存储子查询结果集的临时表),他是一张临时表,临时表也会使用索引。
  • 物化表转连接:将in的语句变为连接查询
  • 将子查询转换为半连接(semi-join):只关心连接中是否有,不关心有几个!

结束语

  • 获取更多有价值的文章,让我们一起成为架构师!
  • 关注公众号,可以让你逐步对MySQL以及并发编程有更深入的理解!
  • 这个公众号,无广告!!!每日更新!!!
    作者公众号.jpg
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:59:51  更:2021-12-28 23:01:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:44:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码