美文网首页
MySQL对执行计划进行的优化

MySQL对执行计划进行的优化

作者: Franck_ | 来源:发表于2020-11-10 13:04 被阅读0次

Mysql会对需要执行的SQL进行一个成本计算。然后用计算出来的成本来判断选择什么执行计划。

这个成本有2部分。

  1. 从磁盘将数据页读取出来的成本值 = 1.0,消耗的是磁盘IO
  2. 读取和检测一条数据是否符合查询的条件成本值=0.2 ,消耗的是CPU计算

计算一次全表扫描的成本如下: (计算不完全准确,只是表达意思)
1 因为是全表扫描,所以要加载所有的数据页,假设有100个数据页。 那么磁盘IO的总成本大概 = 100 * 1 = 200 。
2 假设这100页的数据有10000条。 那么CPU的总成本值 = 10000 * 0.2 = 2000

那么这次全表扫描的总成本 = 200 + 2000 = 2200。

使用索引进行查询的成本如下:

在二级索引里面查询有以下几个部分:

  1. 查询范围区间,其实就是查询的条件,例如 name = XX 就是1个区间,age >10 and age < 20就是2个区间。 1个区间的成本 = 1页的成本。 这个成本比较低,一般是个位数。 例如3个条件 = 3

  2. 估计在二级索引里面筛选的数据条数目, 然后计算CPU成本, 例如 100条 : 100 * 0.2 = 20

  3. 进行回表,在回表的时候,默认认为1条数据的成本 = 1个数据页的成本 = 1 。例如100条数据回表的成本= 100 * 1 = 100 。

  4. 回表以后,就可以根据其他条件去筛选最后符合查询的数据,这个成本是CPU成本,假设还是那100条那么成本 = 100 * 0.2 = 20

最后将所有成本加起来就是使用索引进行查询的成本了: 3 + 20 + 100 + 20 = 153。

对比一下全表扫描和索引扫描的成本。差距是很大的。

多表关联查询和单表的查询成本估算方法差不多, 只是要估算多个表的查询成本进行计算。

如果可以使用多个索引的时候,MySql会对几个执行方案进行成本的计算, 选择最低成本的方案来执行。

相关文章

  • Mysql优化之explain详解

    关键词: mysql explain sql优化 执行计划 简述:explain为mysql提供语句的执行计划信息...

  • MySQL进阶之路--EXPLAIN执行计划详解

    执行计划简介 执行计划是指一条SQL语句在经过MySQL查询优化器的优化会后,具体的执行方式。MySQL为我们提供...

  • MySQL对执行计划进行的优化

    Mysql会对需要执行的SQL进行一个成本计算。然后用计算出来的成本来判断选择什么执行计划。 这个成本有2部分。 ...

  • 索引

    一文说尽 MySQL 优化原理MySQL 索引管理与执行计划

  • MySQL的执行计划

    MySQL的执行计划 什么是执行计划? 执行计划通常是开发者优化SQL语句的第一步。MySQL在解析SQL语句时,...

  • DEPENDENT SUBQUERY 陷阱(语句待补充)

    MySQL的优化器较Oracle来说薄弱了很多,因此写语句时需要进行注意,必须使用explain查看执行计划,...

  • SQL执行与优化

    SQL优化 执行计划,表关联查询顺序,优化策略与思路 MYSQL执行过程 一、MySQL架构总览: 二、查询执行流...

  • Vertica的这些事(六)—— vertica中group b

    vertica group by优化语句,先对语句进行explain 操作查看预执行计划,其中group by 分...

  • MySQL源码解析之执行计划

    MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一、My...

  • Explain详解

    最近在看mysql 优化,可以用Explain 关键字来查看select sql 的执行计划。 mysql> ex...

网友评论

      本文标题:MySQL对执行计划进行的优化

      本文链接:https://www.haomeiwen.com/subject/fiylbktx.html