如何根据Explain执行计划对数据库查询语句进行优化

文章目录

    • 如何根据Explain执行计划对数据库查询语句进行优化
      • 官网地址
      • 执行计划输出的列
      • 执行计划中的type列

如何根据Explain执行计划对数据库查询语句进行优化

官网地址

Mysql官网地址:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

如下图:

如何根据Explain执行计划对数据库查询语句进行优化_第1张图片

执行计划输出的列

如何根据Explain执行计划对数据库查询语句进行优化_第2张图片

执行计划中的type列

type列的值有很多,如下图:

如何根据Explain执行计划对数据库查询语句进行优化_第3张图片

首先来说一下效率最低的type值ALL

如何根据Explain执行计划对数据库查询语句进行优化_第4张图片

如果是All的话,那么在数据库表进行查询的时候,会对全表进行查询,会查询表里面的全部的数据,如下图:

如何根据Explain执行计划对数据库查询语句进行优化_第5张图片

All可以优化到Range提升效率

如果我们的执行计划中的type的值是All,那么它会查询全表数据,它的执行效率其实是很低的,那么我们就需要优化它的效率,可以怎么优化呢?我们可以通过加一个索引的方式,从而优化查询效率到Range。如下图:

如何根据Explain执行计划对数据库查询语句进行优化_第6张图片

type的值等于Const

如何根据Explain执行计划对数据库查询语句进行优化_第7张图片

const的效率非常的高,因为它最多只会匹配到一行,它也必须要用到索引,然后筛选索引等于某个值的情况,索引也可以当成主键,一个表中最多有一个值。所以,我们const最多只能查询出来一行数据,查询到此处之后,后续的数据就不再查询了,如下图:

如何根据Explain执行计划对数据库查询语句进行优化_第8张图片

type的值为eq_ref和ref

如何根据Explain执行计划对数据库查询语句进行优化_第9张图片

如何根据Explain执行计划对数据库查询语句进行优化_第10张图片

你可能感兴趣的:(mysql,mysql,数据库)