【软件测试基础知识】执行计划中索引使用的情况

发布 : 软件测试培训      来源:软件测试干货资料

2021-05-12 13:56:16

在我的上一篇文章《功能测试也可以发现数据库相关的性能问题》中提到,通过SQL语句的执行计划可以断定一些语句肯定有性能问题,今天再写一篇文章,介绍一下执行计划中索引使用的情况。

执行explain之后结果集包含如下信息:

possible_keys:指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用(该查询可以利用的索引,如果没有任何索引显示NULL)

key:显示MySQL实际决定使用的键(索引),一般会情况会包含在possible_keys中,如果没有选择索引,键是NULL。

possible_keys和key产生的情况可能有以下几种:

1)possible_keys有多个值,key得值为possible_keys中的一个。

2)possible_keys有一个值,key的值和possible_keys中的值相同。

3)possible_keys有一个或多个值,但key为NULL。

4)possible_keys为NULL,但key有值。

5)possible_keys和key都为NULL。

下面我们分别来看下各种情况。

1. possible_keys有多个值,key得值为possible_keys中的一个。

这种情况比较常见,因为每条sql最多只能用到一个索引。下面的例子我们在col1字段上创建了一个单独索引和一个复合索引,所以possible_keys有两个,但key只有一个。

2. possible_keys有一个值,key的值和possible_keys中的值相同。在上面的基础上,我们删掉任意一个索引。结果如下:

3. possible_keys有一个或多个值,但key为NULL。下图中,因为col1为varchar类型,但是查询的时候没有加上引号

4. possible_keys为NULL,但key有值。这种一般是引用了覆盖索引的情况,col1,col2和col3两列加过联合索引,select的字段不是*,而是col1和col2,所以结果只会出现在key这一列中。

5. possible_keys和key都为NULL,我们直接看下面的例子

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部