高性能 MySQL - 第六章 查询性能优化

本文深入探讨MySQL第六章查询性能优化,涵盖查询执行过程、优化器工作原理、慢查询基础和优化策略。强调了索引、查询设计和库表结构的重要性,提出了解决全表扫描、子查询优化、关联查询和分页等问题的方法。
摘要由CSDN通过智能技术生成

最近阅读MySQL高性能,略有收获,好记忆不如烂笔头,记录一下。本期笔记主要是围绕高性能MySQL第六章查询性能优化。

整体结构

在这里插入图片描述

重点、亮点内容摘抄

第六章 查询性能优化

查询优化、索引优化、库表结构优化需要齐头并进,一个不落。在获得编写MySQL查询经验的同时,也将学习到何为高效的查询设计表和索引,也可以学习到优化库表结构时会影响到那些类型的查询。
本章从查询设计的一些基本原则开始,介绍一些查询优化的技巧以及MySQL优化器内部的机制,展示MySQL是如何执行查询的,如何改变一个查询的执行计划。

1. 查询执行的过程

在这里插入图片描述
执行路径:

  1. 客户端发送查询请求
  2. 服务器检查是否有缓存,未命中缓存则进入下一阶段,命中则直接返回
  3. 服务器端解析 SQL ,预处理,优化器生成对应的执行计划
    a. 解析器进行语法解析
    b. 预处理:判断解析树是否合法,验证权限
    c. 优化器生成执行计划:优化器基于成本模型做出认为的最优选择
    1. MySQL 认为的最优跟你想的最优可能不一样,并不一定是时间最短的查询
    2. 静态优化&动态优化 -> “编译时”优化&“运行时”优化
    3. 优化器优化类型:
      1. 重新定义关联表的顺序(驱动表)
      2. 外连接转为内连接
      3. 条件的等价转换
      4. 优化 count()
      5. 预估并转为常数表达式(关联查询时,根据第一层查询的结果预估第二层查询的类型,转为常数表达式类型)
      6. 覆盖索引扫描
      7. 子查询优化
      8. 提前终止查询(limit)
      9. 等值传播(连表健做条件时,条件可传播到两个表)
      10. in 查询 VS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值