加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL EXPLAIN结果集分析 - 附带大量案例

发布时间:2019-09-18 03:54:55 所属栏目:MySql教程 来源:佚名
导读:EXPLAIN:查看SQL语句的执行计划 EXPLAIN命令可以帮助我们深入了解MySQL基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用,在优化慢查询时非常有用。 执行explain之后结果集包含如下

using index: 该值表示这个SQL语句使用了覆盖索引(覆盖索引是指可以直接在索引列中得到想要的结果,而不用去回表),此时效率最高

  1. mysql> explain select id from test; 
  2. +----+-------------+-------+-------+---------------+----------+---------+------+-------+-------------+ 
  3. | id | select_type | table | type  | possible_keys | key      | key_len | ref  | rows  | Extra       | 
  4. +----+-------------+-------+-------+---------------+----------+---------+------+-------+-------------+ 
  5. |  1 | SIMPLE      | test  | index | NULL          | idx_bnet | 9       | NULL | 68505 | Using index | 
  6. +----+-------------+-------+-------+---------------+----------+---------+------+-------+-------------+ 

这个例子中id字段为主键,但是key那里显示走的并不是主键索引,这个是因为mysql的所有二级索引中都会包含所有的主键信息,而mysql没有单独的存储主键索引,所以扫描二级索引的开销比全表扫描更快

using where: 表示存储引擎搜到记录后进行了后过滤(POST-FILTER),如果查询未能使用索引,using where的作用只是提醒我们mysql要用where条件过滤结果集

  1. mysql> explain select * from test where id > 1; 
  2. +----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+ 
  3. | id | select_type | table | type  | possible_keys | key     | key_len | ref  | rows  | Extra       | 
  4. +----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+ 
  5. |  1 | SIMPLE      | test  | range | PRIMARY       | PRIMARY | 8       | NULL | 34252 | Using where | 
  6. +----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+ 

using temporary 表示mysql需要使用临时表来存储结果集,常见于排序和分组查询

  1. mysql> explain select * from test where id in (1,2) group by bnet_id; 
  2. +----+-------------+-------+-------+-----------------------------------------+---------+---------+------+------+----------------------------------------------+ 
  3. | id | select_type | table | type  | possible_keys                           | key     | key_len | ref  | rows | Extra                                        | 
  4. +----+-------------+-------+-------+-----------------------------------------+---------+---------+------+------+----------------------------------------------+ 
  5. |  1 | SIMPLE      | test  | range | PRIMARY,IDX(event_key-bnet_Id),idx_bnet | PRIMARY | 8       | NULL |    2 | Using where; Using temporary; Using filesort | 
  6. +----+-------------+-------+-------+-----------------------------------------+---------+---------+------+------+----------------------------------------------+ 

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读