MySql教程

MySQL:透彻研究通过explain命令得到的SQL执行计划

本文主要是介绍MySQL:透彻研究通过explain命令得到的SQL执行计划,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我们知道每条SQL语句,MySQL都会经过成本和规则的优化,对这个SQL选中对应的一些访问方法和顺序,包括做一些特殊的改写确保执行效率是最优的,然后优化过后,就会得到一个执行计划。

所谓的执行计划,落实到底层,无非是先访问哪个表,用哪个索引还是全表扫描,拿到数据之后如何去聚簇索引回表,是否要基于临时磁盘文件做分组聚合或者排序。

平时我们只要用类似于:explain select * from table,这种SQL前面加一个explain命令,就可以轻松拿到这个SQL语句的执行计划。比如:

id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra
|±—±------------±------±-----------±-----±--------------±-----±--------±-----±-----±---------±---------------+|
1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |

所谓的id、select_type、table、partitions、type之类的东西了吗,其实这些就是所谓的执行计划:

  • id:每个select都会对应一个id,一个复杂的SQL里可能会有多个SELECT,也可能会包含多条执行计划,每一条执行计划都会有唯一的id
  • select_type:就是这一条执行计划对应的查询是个什么类型
  • table :表名,表示要查询哪个表
  • partitions :表分区
  • type:这个比较关键,表示针对这个表的访问非法,比如const、ref、range、index、all
这篇关于MySQL:透彻研究通过explain命令得到的SQL执行计划的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!