400-650-7353
您所在的位置:首页 > IT干货资料 > 软件测试 > 【软件测试基础知识】执行计划中索引使用的情况

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

  • 发布: 软件测试培训
  • 来源:软件测试干货资料
  • 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,我们直接看下面的例子

文章“【软件测试基础知识】执行计划中索引使用的情况”已帮助

>>本文地址:https://www.ujiuye.com/zhuanye/2021/68696.html

THE END  

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

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME