explain工具可以确认执行计划是否良好,查询是否走了合理的索引。查询的执行计划,随着数据的变化也可能会有变化。调用方式:explain + [sql语句]。

另外,explain是有局限性的:
1. 不会说明触发器、存储过程、自定义函数对查询的影响情况;
2. 不考虑各种Cache情况;
3. 不能显示执行查询时所做的优化工作;
4. 部分信息是估算的,并非精确值;
5. mysql 5.6之前,只能解释select操作,其他操作需要重写为select之才查看执行计划。
6. 如果from里有子查询,explain可能会执行这个子查询。所以,如果有耗资源很大的子查询,使用explain会产生很大的开销。

各列字段的解释,如下:

1. id,一组数字,操作顺序,如果id相同,则执行顺序由上至下。如果是子查询,id的序号会递增,值越大则优先级越高,越先被执行。

2. select_type,表示每个子句的类型,简单还是复杂,取值有如下几种:

  a) simple:简单查询,无子查询或union等;
  b) primary:查询中若包含任何复杂的子部分,最外层则被标记为primary;
  c) subquery:在select或where中若包含子查询,则该子查询被标记为subquery;
  d) derived:from中包含子查询,被标记为derived;
  e) union:若select出现在union之后,则被标记为union;
  f) union result:从union表中获取结果的select将被标记为union result;
3. type,找到所需行的方式,又称访问类型,取值有如下几种,由最差到最好:

  a) all:全表扫描。
  b) index:遍历索引,全索引扫描。
  c) range:索引范围扫描。
  d) ref:非唯一性索引扫描,交返回匹配单独值的所有行,常见于使用非唯一性索引或唯一性索引的非唯一前缀进行的查找。
  e) eq_ref:唯一性索引扫描。
  f) const、system:当mysql对查询的某部分进行优化,并转换为一个常量时。如将主键置于where列表中,mysql就能将该查询转换为一个常量。system是const的特例,当查询的表只有一行的情况下,即可使用system。
4. possible_keys: 指出mysql能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出,但不一定会被查询使用到。

5. key:使用到了哪个索引,这里列出的是实际使用到的索引,若没有使用索引,则显示为null。

6. ref:连接匹配条件,即哪些列或常量用于查找索引上的值。

7. rows:找到所需记录,需要读取的行数,越少越好。

8. Extra:不适合在其他列显示,但却十分重要的信息,常见的有如下值:
  a) Using index:使用了覆盖索引。
  b) Using where:where条件未使用索引。
  c) Using temporary:需要使用临时表来存储结果集,常见于排序和分组查询。性能差。
  d) Using filesoft:使用了文件排序,性能差。

最新文章

  1. python leetcode 1
  2. iOS UITabBarController的使用
  3. 如何给不支持新特性的浏览器打补丁(让老版本IE兼容新特性)
  4. I/O 请求数据包
  5. C Primer Plus_第三章_数据和C_复习题与编程练习
  6. 字符串_KMP算法(求next[]模板 hdu 1711)
  7. java向图片上写字,两个图片合并的方法
  8. SSH 远程连接
  9. 【iOS开发-从网络上获取图片尺寸】
  10. pyqt treeview基础学习
  11. Android项目记录点滴2
  12. C语言,函数的声明与定义
  13. node入门笔记
  14. 一起学Linux04之Linux文件基本属性
  15. 广师大python学习笔记求派的值
  16. Python 的异步 IO:Asyncio 简介
  17. py下windows用户安装lxml
  18. python在使用MySQLdb模块时报Can't extract file(s) to egg cacheThe following error occurred while trying to extract file(s) to the Python eggcache的错误。
  19. php正则替换双引号里面的字符
  20. jquery 绑定事件 获取方式 --------------data event 获取

热门文章

  1. POJ - 2586 Y2K Accounting Bug (找规律)
  2. MongoDB整理笔记の高级查询
  3. SharePoint Server 2013 Excel Web Access无法显示
  4. C# Winform Cef 闪屏
  5. web3部署智能合约碰到的一个奇怪问题
  6. Mybatis 延迟加载策略
  7. 解决org.hibernate.NonUniqueObjectException的问题
  8. kali linux之被动信息收集(dns信息收集,区域传输,字典爆破)
  9. 【转】右键的 在 vs 中打开 怎么去掉
  10. BUAA_OO_电梯系列