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,我们直接看下面的例子

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

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

获取测试结果
 
课程资料、活动优惠 领取通道