zoukankan      html  css  js  c++  java
  • 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';

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

  • 相关阅读:
    Bzoj 3173: [Tjoi2013]最长上升子序列 平衡树,Treap,二分,树的序遍历
    Bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声 单调栈
    Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
    Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆
    Bzoj 3110: [Zjoi2013]K大数查询 树套树
    Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
    面试题24:二叉排序树的后序遍历序列
    面试题23:从上往下打印二叉树
    面试题22:栈的压入、弹出序列
    面试题21:包含min函数的栈
  • 原文地址:https://www.cnblogs.com/ayanboke/p/10983175.html
Copyright © 2011-2022 走看看