美文网首页
执行计划,SQL是怎么执行的

执行计划,SQL是怎么执行的

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

执行计划级别

const

如果一个SQL执行的时候,完全使用上索引,聚簇索引或者二级索引+回表。那么这种查找数据的过程,在执行计划里面称为const,意思是常量级别的,超级快的。

但是二级索引必须是uniqu的,必须是唯一的,才会是const。

ref

如果二级索引是普通索引,不是唯一索引的话,那么这个级别叫做ref。如果条件包含多个索引,只有从最左侧开始连续多个列都是等值比较才属于ref。 如果条件里面有 “字段名 is NULL”这样的条件 例如: name = 'aa' or name is null,那么在执行计划里面会叫做 ref_or_null。 意思是

range

使用索引进行范围查找的时候,就会是这个级别。 因为也使用了索引,所以速度不会太差。

index

只需要遍历二级索引就能获取到需要的数据,不需要进行回表。这样的方式称为index级别。意思是,我们查询需要的字段能在二级索引里面全部找到,但是又不符合索引的最左匹配规则,只能对二级索引的叶子结点进行遍历。但是不需要回表,而且也比直接去遍历聚簇索引要快得多,因为字段比较少,数据比较小。

all

全表扫描,对聚簇索引的叶子结点进行全表扫描。性能级差。

单表查询,用到多个索引的时候, 查询的步骤会有几种可能:

  1. 使用1个索引筛选出数据,然后回表获取完整的数据,再根据第二个条件进行筛选。 具体先使用哪个索引,由MySql进行选择,会选择扫描数据比较少的索引。

  2. 使用2个索引分别筛选出数据, 然后取并集,或者交集。 然后再去回表。

多表查询
多表查询的时候,一般都会使用连表,步骤是,先根据条件从表1筛选出数据, 然后用第1条数据的关联字段作为条件,去表2里面找数据,找到数据后就关联起来。 然后用表1的第2条数据的关联字段去表2里面筛选数据。

这种查询的方式,叫做嵌套循环关联, 像是我们写代码的时候里面的多重嵌套循环,所以关联查询一般很慢,多张表关联起来就更加慢了。

要尽量保证在筛选的数据的时候使用上索引,这样关联查询起来也会快很多些。

相关文章

  • MYSQL执行计划字段详解

    Mysql查看执行计划 explain + sql :输出执行计划。explain extended + sql ...

  • java面试题 --- MySQL③

    1. 生产环境中一条 SQL 执行特别慢,你要如何排查问题?可以查看 SQL 的执行计划。 2. 执行计划怎么用?...

  • MYSQL explain执行计划解读

    Explain 查看SQL语句的执行计划:分析SQL执行计划,优化SQL及索引策略,run faster. ...

  • MySQL的执行计划

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

  • Oracle SQL 学习笔记32 - 执行计划

    执行计划 定义 执行计划是优化器(optimizer)执行SQL语句和操作的步骤集合。 查看执行计划的方法 EXP...

  • oracle 11g新特性之执行计划管理

    执行计划管理 1. 执行计划管理的工作原理 我们知道,SQL语句的性能很大程度上依赖于SQL语句的执行计划。如果...

  • 执行计划,SQL是怎么执行的

    执行计划级别 const 如果一个SQL执行的时候,完全使用上索引,聚簇索引或者二级索引+回表。那么这种查找数据的...

  • Mysql - Explain

    Mysql - Explain explain + 查询sql可以生成一个执行计划,可以通过执行计划来进行sql优...

  • MySQL的SQL执行计划

    什么是SQL执行计划 SQL执行计划,就是一条SQL语句,在数据库中实际执行的时候,一步步的分别都做了什么。就是我...

  • MySQL的执行计划

    执行计划是什么?执行计划是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化。在MySQL中使用exp...

网友评论

      本文标题:执行计划,SQL是怎么执行的

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