zoukankan      html  css  js  c++  java
  • explain分析sql

    mysql中可以使用explain命令来解析查询语句的性能,只需要在查询语句之前加上 explain 关键字即可。

    接下来分别对结果中的每一个字段进行解析。

    1)select_type  select查询的类型

    SIMPLE  表示此查询是一个不包含union和子查询的简单查询。

    PRIMARY  表示此查询是最外层的查询

    UNION  表示此查询是union的第二或随后的查询

    SUBQUERY  子查询的第一个select

    2)table  查询的是哪个表

    3)type 

    该字段是判断查询是否高效的重要依据。通过type的类型,可以得知该查询是全表扫描还是索引扫描。

    type的常用类型

    system  表中只有一条数据,这个类型是特殊的const类型。

    const  针对主键或唯一索引的等值查询扫描,最多只返回一行数据。const查询速度非常快,因为它仅仅读取一次即可。

    eq_ref  此类型通常出现在多表的join查询,表示对于前表的每一个结果,都只能匹配到后表的一行结果,并且查询的比较操作通常是=,查询效率较高。

    ref  此类型通常出现在join查询,针对非唯一或非主键索引,或者是使用了最左前缀规则索引的查询。

    range  表示使用索引范围查询,通过索引字段范围获取表中部分数据记录。这个类型通常出现在=,>=,<=,between,in等操作中。

    index  表示全索引扫描,仅仅扫描所有的索引就可以获取结果,而不用扫描数据。当这种情况时,extra字段会显示 using index。

    ALL  表示全表扫描,这个类型的查询是性能最差的查询之一。通常来说,我们的查询不应该出现ALL类型的,因为这样在大数据量的情况下,对数据库的性能是巨大的灾难。

    4)possible_keys  此次查询中可能选用的索引

    5)key  此次查询中确切使用到的索引

    6)ref  哪个字段或常数与key一起被使用

    7)rows  显示此查询一共扫描了多少行,这是一个估计值

    8)filtered  表示此查询条件所过滤的数据的百分比

    9)extra  额外的信息

  • 相关阅读:
    装饰器实例
    生成器、迭代器脚本实例
    魔法方法和属性
    随机生成验证码
    认证客户端的链接合法性
    将socket通信实现多进程
    线程锁模拟抢票系统
    ntp时间服务器
    蛇形串---------
    两年内计划
  • 原文地址:https://www.cnblogs.com/mydesky2012/p/11493801.html
Copyright © 2011-2022 走看看