• mysql explain参数详解


    主要对几个参数做一些记录

    type:显示的是访问类型

           从最好到最差的连接类型为:const、eq_reg、ref、range、index和ALL

    至少要达到range,基本是ref  最好是const

    const:单表中最多只有一个匹配行:主键或唯一

    ref:使用普通索引

    range:范围查找

    ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

     

    rows:MYSQL认为必须检查的用来返回请求数据的行数

    key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

    possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

    key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

    Extra:关于MYSQL如何解析查询的额外信息

    Using index
    此查询使用了覆盖索引(Covering Index),即通过索引就能返回结果,无需访问表。
    若没显示"Using index"表示读取了表数据。
    Using where
    表示 MySQL 服务器从存储引擎收到行后再进行“后过滤”(Post-filter)。所谓“后过滤”,就是先读取整行数据,再检查此行是否符合 where 句的条件,符合就留下,不符合便丢弃。因为检查是在读取行后才进行的,所以称为“后过滤”。
    Using temporary
    使用到临时表
    建表及插入数据:
    create table a(a_id int, b_id int);
    insert into a values(1,1),(1,1),(2,1),(2,2),(3,1);
    mysql> explain select distinct a_id from aG
            Extra: Using temporary
    MySQL 使用临时表来实现 distinct 操作。
     
    Using filesort
    若查询所需的排序与使用的索引的排序一致,因为索引是已排序的,因此按索引的顺序读取结果返回,否则,在取得结果后,还需要按查询所需的顺序对结果进行排序,这时就会出现 Using filesort 。
    select * from a order by id;
    对于没有索引的列进行order by 就会出现filesort
  • 相关阅读:
    windows7触屏编程
    改变窗口大小,恢复以前的大小
    insert()
    index()
    help()
    id()
    extend()
    count()
    cmp()
    append()
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9224653.html
Copyright © 2020-2023  润新知