explain执行计划

简介MySQL调优:

  1. 先发现问题(慢查询,profile)
  2. 对于使用索引和没有使用索引,了解到索引可以快速去查找数据
  3. 了解什么是索引(索引是排好序的快速查找的数据结构)
  4. 索引的管理(查看,创建,删除)
  5. 索引的本身的数据结构(B-TREE结构和聚簇结构)
  6. MySQL是如何去使用这些索引的(explain工具),需要去发现索引是否合理的被使用,防止索引滥用。

     

    注意:索引对查询是有帮助的,但是对更新是没有好处的。索引要建立的合理。

     

    MySQL调优的一个通用思路(面试题):通过上面的步骤就可以对MySQL进行调优,只要将上面的步骤重复不断执行,可以使用MySQL在最优的情况下工作。

     

    profile定义:MySQL提供的一个可以分析SQL语句执行过程的工具,通过它大致可以了解到MySQL将如何执行用户传递过来的sql语句。

    用法

    使用的时候只要在对应的sql语句前面,加上关键字explain 或者同义词 desc

    # desc select * from tableName where id = 1000000;

    # explain select * from tableName where id = 1000000;

    以上两条sql执行效果是等价的。

     

    可以先简单对比 有索引 和 无索引 执行计划:

    no_index无索引的情况下分析:

     

    rows: 代表查询满足该sql语句的结果,可能需要查询行的数量。

     

    id存在主键索引的情况下分析:

     

    type:重点分析

     

  7. all 代表全表扫描,一般在不使用索引的情况下回出现该值

    全表扫描:一行一行的逐行比较,然后返回满足条件的记录。

     

  8. const,代表使用了主键索引。 开发之中,尽量出现这个。常量查找

     

    3. range代表范围操作,当执行的sql语句是一个范围查找的时候,也可以使用索引。

    range含义解释:由于索引是排好序的结构。沿着这个有序的结构,再去截取一段有序的数据,是可以利用上索引的。

     

     

    面试题:什么样的字段适合建立索引?(建立索引的时候有什么考虑?)

    答:

  9. 在where条件后面作为查询的字段需要建立索引。
  10. 在(排序order 范围range 分组group)这些情况下也是可以使用索引的,所以在排序字段后面加上索引也是可以的。

    注意:在where条件后也不是所有的字段都建立索引,因为索引本身也是有开销的。

     

  11. index代表使用了索引

    当做记录统计的时候,可以直接使用索引返回记录的行数,就没必要去对磁盘文件的行数做统计。

     

  12. system,当表中的记录只有一行的时候,MySQL认为可以直接的返回记录信息,而不必要使用索引文件。一般出现在一行记录(自己建立的表)或者系统级别的表(mysql.user)一般MySQL在启动的时候,会将部分的系统级别的表优先载入到内存做一个缓存。

     

  13. null,可能出现,如果出现这个,也代表很好。基本不容易出现。

    总结:null 》system》const》range》index》all

    注意:尽量不要出现all

     

网站优化—mysql explain执行计划的更多相关文章

  1. MySQL性能分析, mysql explain执行计划详解

    MySQL性能分析 MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析 ...

  2. Mysql explain执行计划

    EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...

  3. MySql——Explain执行计划详解

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...

  4. [MySQL] explain执行计划解读

    Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得 ...

  5. MySQL — 优化之explain执行计划详解(转)

    EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个 ...

  6. 【夯实Mysql基础】mysql explain执行计划详解

    原文地址   1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A ...

  7. mysql explain执行计划详解

      1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A:simp ...

  8. MYSQL EXPLAIN执行计划命令详解(支持更新中)

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所 ...

  9. 【转】mysql explain执行计划详解

      1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A:simp ...

随机推荐

  1. BFS:胜利大逃亡

    解题心得: 1.水题,主要主意好一个点就好. 2.注意x.y.z坐标的选取就好. 题目: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城 ...

  2. 笔记-算法-KMP算法

    笔记-算法-KMP算法 1.      KMP算法 KMP算法是一种改进的字符串匹配算法,KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.具体实现就是实现一 ...

  3. 手机APP设计网

     http://hao.xueui.cn/ http://www.25xt.com/ 

  4. WebApp开发技巧

    http://www.cnblogs.com/WhiteCusp/p/4502961.html http://ju.outofmemory.cn/entry/25675 http://www.fron ...

  5. IOS开发学习笔记005-数组

    数组 数组故名思议就是一组数据的集合. int a[10];//可以存储10个整数 char  c[8];//可以存储8个字符‘ 一般格式:数组类型 数组名[元素个数]: 数组元素的访问:下标,a[2 ...

  6. hnust 搬书

    问题 G: 搬书 时间限制: 1 Sec  内存限制: 128 MB提交: 576  解决: 49[提交][状态][讨论版] 题目描述 XCQ队长要退役啦,由于队长常年刷题,机位上摆着各类算法书,一个 ...

  7. camelot工具进行pdf表格解析重建

    camelot内置生成html文件的方法,但表格数据转化成pandas.dataframe的过程中,丢失了跨行跨列的结构信息,故生成html的表格无跨行跨列结构. 于是我在输出部分选择直接手写html ...

  8. Leetcode 629.K个逆序对数组

    K个逆序对数组 给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数. 逆序对的定义如下:对于数组的第i个和第 j个元素,如果满i < j且  ...

  9. Leetcode 491.递增子序列

    递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7] ...

  10. Corrupt block relative dba: 0x04c20df1

    alert日志报以下提示: Corrupt block relative dba: , block ) Fractured block found during backing up datafile ...