zoukankan      html  css  js  c++  java
  • explain执行计划学习1

    1.1 id

    select查询的序列号,包含一组数字,表示查询中执行select子句或者操作表的顺序

    id号分为三种情况:

    ​ 1、如果id相同,那么执行顺序从上到下

     id一样(注意执行计划的table列),left join 先扫描e表,再扫描d表;right join 先扫描d表,再扫描e表。

    2、如果id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

     我们可以看到d表中select_type为 SUBQUERY 也就是子查询的 意思),然后根据d表中的deptno去查询 e表中的数据。

    3、id相同和不同的,同时存在:相同的可以认为是一组,从上往下顺序执行,在所有组中,id值越大,优先级越高,越先执行

     在这里先从id为2的执行,如果id是一样的,就按照上到下的顺序执行;

    Type 连接类型分几种情况:

    • system

      该表只有一行(= 系统表)。这是const连接类型的一个特例。

    • const

      该表最多有一个匹配行,该行在查询开始时读取。由于只有一行,因此优化程序的其余部分可以将此行中列的值视为常量。 const表非常快,因为它们只读取一次。

    效率从最好到最坏依次是:

    system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

    一般情况下,得保证查询至少达到range级别,最好能达到ref 。

     

    --range:表示利用索引查询的时候限制了范围,在指定范围内进行查询,这样避免了index的全索引扫描,适用的操作符: =, <>, >, >=, <, <=, IS NULL, BETWEEN, LIKE, or IN()

     --index_subquery:利用索引来关联子查询,不再扫描全表

     -unique_subquery:该连接类型类似与index_subquery,使用的是唯一索引

    --ref:使用了非唯一性索引进行数据的查找

    --eq_ref :使用唯一性索引进行数据查找

    --index:全索引扫描这个比all的效率要好,主要有两种情况,一种是当前的查询时覆盖索引,即我们需要的数据在索引中就可以索取,或者是使用了索引进行排序,这样就避免数据的重排序。

  • 相关阅读:
    QQ机器人
    Javascript实现base64的加密解密
    C# 对List<T>取交集、连集及差集
    简单正则验证
    中止线程
    线程同步synchronized
    volatile
    并发
    垃圾回收机制
    给定一个正整数num ,反复将各个位上的数字相加,直到结果为一位数
  • 原文地址:https://www.cnblogs.com/vzhangxk/p/15784508.html
Copyright © 2011-2022 走看看