完全掌握Mysql的explain

文 / @UTHEME

type代表的是Mysql在执行查询时使用的索引类型,总的来说,可以分为以下几种情况:
(1)ALL:全表扫描,查找指定数据;
(2)index:遍历全索引进行查询;
(3)range:范围扫描,查找索引范围内数据;
(4)ref:基于索引查找单个属性值的匹配行;
(5)eq_ref:类似ref,但是对于每个索引键值只有一行记录,通常在连接查询中使用;
(6)const、system:一种特殊的索引查询,const表示对于每个查询值都只有一行,system表示表中只有一行。
通常来说,我们需要确保type的值尽可能的小,因为type值越小,Mysql查询的效率就越高。
6、possible_keyspossible_keys表示在查询中可能使用的索引。
7、keykey代表Mysql实际选用的索引,如果key为null,说明没有使用索引,这也是造成效率低下的因素之一。
8、key_lenkey_len表示Mysql在使用索引进行查询时,索引字段的长度。
9、refref表示正在使用哪些列或常数与表之间的索引匹配,一般情况下也是使用on或者using来实现的。
10、rowsrows代表Mysql查询到的结果集数量,一般情况下rows的值越小查询效率越高。
11、filteredfiltered表示Mysql在查询数据过程中所过滤的数据行数百分比,百分比越小,说明查询效率越高。
12、ExtraExtra列是对查询的额外描述,包括了很多的查询提示信息,比如Using filesort而没有使用索引导致查询变慢等等,这些信息对于我们优化查询效率很有帮助。
总结 使用explain可以帮助我们分析SQL语句的执行计划,从而优化查询效率。但是需要注意的是,只有了解每一个字段的含义,才能更好地分析结果,定位问题,从而针对性地进行优化。同时也需要注意,合理地建立索引可以大大提高查询效率,因此需要结合具体业务场景和数据量来进行合理的索引优化。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。