MySQL
来源:互联网 发布:win10和ubuntu双系统 编辑:程序博客网 时间:2024/06/04 00:23
慢查询日志可以帮助我们把所有查询时间过长的sql语句记录下来,在优化这些语句之前,我们应该使用explain命令查看mysql的执行计划,寻找其中的可优化点。
explain命令的使用十分简单,只需要”explain + sql语句”即可,如下命令就是对我们刚刚的慢查询语句使用explain之后的结果:
mysql> explain select * from emp where empno=65454\G;*************************** 1. row *************************** id: 1 select_type: SIMPLE table: emp type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10000351 Extra: Using where1 row in set (0.00 sec)ERROR:No query specified
可以看到,explain命令的结果一共有以下几列:id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra,这些列分别代表以下意思:
- id:SELECT识别符。这是SELECT的查询序列号
- select_type:查询类型,主要有PRIMARY(子查询中最外层查询)、SUBQUERY(子查询内层第一个SELECT)、 UNION(UNION语句中第二个SELECT开始后面所有SELECT)、SIMPLE(除了子查询或者union之外的其他查询)
- table:所访问的数据库表明;
- type:对表的访问方式,包括以下类型all(全表扫描),index(全索引扫描),rang(索引范围扫描),ref(join语句中被驱动表索引引用查询),eq_ref(通过主键或唯一索引访问,最多只会有一条结果),const(读常量,只需读一次),system(系统表。表中只有一条数据),null(速度最快)。
- possible_keys:查询可能使用到的索引;
- key:最后选用的索引;
- key_len:使用索引的最大长度;
- ref:列出某个表的某个字段过滤;
- rows:估算出的结果行数;
- extra:查询细节信息,可能是以下值:distinct、using filesort(order by操作)、using index(所查数据只需要在index中即可获取)、using temporary(使用临时表)、using where(如果包含where,且不是仅通过索引即可获取内容,就会包含此信息)。
这样,通过”explain select * from emp where empno=413345\G”命令的输出,我们就可以清楚的看到,这条查询语句是一个全表扫描语句,查询时没有用到任何索引,所以它的查询时间肯定会很慢。
阅读全文
1 0
- Mysql
- MySql
- MYSQL
- MySQL
- mysql
- mysql
- mysql
- mysql
- Mysql
- Mysql
- mysql
- MySQL
- mysql
- Mysql
- mysql
- mysql
- mysql
- mySQL
- bottomsheetbehavior和recycleview的冲突
- gojs禁止画布滚动
- Android获取屏幕宽高
- 禁用WebDAV-tomcat
- Openstack云环境 ironic部署裸机那点儿事
- MySQL
- 如何批量下载网站网页
- Tomcat热部署以及热部署过程中问题解决
- 【安全牛学习笔记】手动漏洞挖掘-SQL注入
- poj3237(树链剖分边维护+线段树区间更新)
- 排序算法之选择排序
- git 常用命令
- bzoj1867: [Noi1999]钉子和小球
- OpenGL绘图过程中,平移后再次旋转,旋转中心为什么变了?