MySQL 索引分析与优化

一、执行计划

explain select * from staff where id = 1;

  •  id:序列号
  • select_type:查询类型

                            SIMPLE:表示查询语句不包含子查询和union。

                            PRIMARY:表示查询是最外层查询。

                            UNION:表示此查询是UNION的第二个或者后续查询。

                            DEPENDENT UNION:UNION中的第二个或后续的查询语句,使用的外面的查询结果。

                            UNION RESULT:UNION的结果。

                            SUBQUERY:select子查询语句。

                            DEPENDENT SUBQUERY:select查询语句依赖外层的结果。

  • table:使用到了哪张表。
  • type:表示存储引擎查询数据时所采用的方式,通过看这个可以看是全表扫描还是基于索引部分扫描。

                            ALL:代表全表扫描,性能最差。

                            index:表示基于索引的全表扫描,先扫描索引,再扫描全表数据。

                            range:表示使用索引范围查询,使用>>=<<=in等等。

                            ref:表示使用非唯一索引进行单值查询。

                            eq_ref:一般情况下出现在多表join查询,表示前面表的每一个记录,都只能匹配后面表的一行结果。

                            const:表示使用主键或唯一索引做等值查询,常量查询。

                            NULL:表示不用访问表,速度最快。

  • possible_keys:查询时可以会使用到的索引,不一定会真使用,显示索引名称。
  • key:查询时真正用到的索引,显示索引名称。
  • rows:MySQL查询优化器会根据统计信息,估算SQL要查询到结果需要扫描多少行记录。原则上rows
               越少效率越高,可以直观的了解到 SQL 效率高低。
  • key_len: 表示查询使用了索引的字节数量。可以判断是否全部使用了组合索引。
  • Extra:额外信息。

                           Using where:表示查询需要通过索引回表查询数据。

                           Using index:表示查询需要通过索引,索引就可以满足所需数据。

                           Using fifilesort:表示查询出来的结果需要额外排序,数据量小在内存,大的话在磁盘,因此有Using fifilesort 建议优化。

                           Using temprorary:查询使用到了临时表,一般出现于去重、分组等操作。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值