• mysql explain详解(索引部分内容)


    索引搜索变快,但是增删改会变慢

    索引本身也要占空间

    存在*.myini中的

    介绍一款工具

    Explain 

    这是一款分析工具,可以对一个sql语句进行分析,可以预测sql语句执行效率。

    mysql> explain select * from emp where empno= 998776G;

    *************************** 1. row ***************************

               id: 1 //代表这个sql语句用到的第一个索引值

      select_type: SIMPLE //简单,普通的索引

            table: emp // 现在是对哪张表查询,多表会显示多表的

       partitions: NULL

             type: const//常量 表的链接类型,有3种,

    possible_keys: PRIMARY //可能用到的索引

              key: PRIMARY //实际用到的索引

          key_len: 3//索引长度

              ref: const

             rows: 1 //是从多少行里取出来的

         filtered: 100.00 //指返回结果的行占需要扫描到的行(rows列的值)的百分比

            Extra: NULL

    1 row in set, 1 warning (0.00 sec)

    ERROR: 

    No query specified

    sql语句加个G可以纵向排列

    Type 有3种:all 表示全表扫描,很慢,加了索引,所以为const

    system 表仅有一行(=系统表),这是const链接类型的一个匹配

    Const 表示最多只有一个匹配

    possible_keys 会选一个最优的索引

    删除索引

    Alter table drop PRIMARY KEY(字段);

    如果是主键,自动就是一个索引

    这条语句是分析会不会用到索引,所描方式是什么,但是分析不出来时间。

    Extra 查询细节信息

    No tables,不用表的查询

    Using filesort这个是对文件进行排序,要尽量避免,很慢。

    Using temporary某些操作必须使用临时表

    常见group by order by 

    Using where 不用读取表中所有信息,仅通过索引就可以获取信息了

    根据explain信息,我们可以得知,sql语句是否使用索引,是从多少记录中取出,还可以看到排序的方式。

    但是如果这么查询:

    select * from emp where  ename='ouiHJB';

    还是会变得很慢,因为没有加索引。

  • 相关阅读:
    SVN cleanup操作反复失败解决办法
    mysql常用命令之-用户密码修改
    properties 配置文件中值换行的问题
    在每一行行尾添加内容
    Java 毫秒转换为日期类型、日期转换为毫秒
    SimpleDateFormat 12小时制以及24小时制的写法
    java校验时间格式 HH:MM
    ClassLoader 详解及用途(写的不错)
    ObjectInputStream类和ObjectInputStream类的使用
    logback 详解
  • 原文地址:https://www.cnblogs.com/ayanboke/p/10983175.html
Copyright © 2020-2023  润新知