zoukankan      html  css  js  c++  java
  • MySQL之Explain关键字解析

    Extra

    Using index

    1. 表示相应的select操作中使用了覆盖索引,避免访问了表的数据行,效率不错!
    2. 如果同时出现using where,表明索引被用来执行索引键值查找。
    3. 如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。

    覆盖索引

    select的数据列只需要从索引中就能够获取到,不比读取数据行,MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件,换句话说:查询列要被所建的索引覆盖。
    比如:
    * 已知现有索引:idx_col1_col2_col3
    * 现有查询语句:select col1, col2 from t1
    * 在这条语句中,select查询的列为col1和col2,而索引idx_col1_col2_col3中恰好包含col1和col2,所以这条语句可以实现索引覆盖。

    using where

    表明使用了where过滤

    using join buffer

    使用了连接缓存,当语句中多次出现join连接时,会出现此关键字。此时可以适当调大join buffer缓冲区的大小。

    impossible where

    where子句的值总是false,不能用来获取任何元组。
    例如:select * from people where name = '张三' and name = '李四';
    在这条SQL中,where的条件是name即等于张三有等于李四,一个人的名字不可能存在这种情况,此时MySQL会给出impossible where的关键字,表明where后的条件总是false。

    select table optimized away

    在没有group by子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化

    distinct

    优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作

    https://e.naixuejiaoyu.com/detail/l_618a4743e4b0c5aef39f896e/4?fromH5=true

  • 相关阅读:
    oracle 失效对象自动重新编译
    Apache commons 工具集简介
    正则表达式 元字符
    LayUI之弹出层
    Js和JQuery基础
    单点登录
    java算法题
    SpringBoot自定义注解
    SpringBoot基础
    java面试题
  • 原文地址:https://www.cnblogs.com/zkm1992/p/15510698.html
Copyright © 2011-2022 走看看