using index mysql_mysql explain解析一 extra中的using index,using where,using index condition...

1.简单介绍

using index 和using where只要使用了索引我们基本都能经常看到,而using index condition则是在mysql5.6后新加的新特性,我们先来看看mysql文档对using index condition的描述

0d4bb63847192ea30846bffbdad7f89c.png

附上mysql文档链接:https://dev.mysql.com/doc/refman/5.7/en/index-condition-pushdown-optimization.html

简单来说,mysql开启了ICP的话,可以减少存储引擎访问基表的次数

下面来简单的介绍一下这三者的区别

using index :使用覆盖索引的时候就会出现

using where:在查找使用索引的情况下,需要回表去查询所需的数据

using index condition:查找使用了索引,但是需要回表查询数据

using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据

以上四点就能看出它们之前的区别,或许有部分人都存在疑惑 using index & using where 和using index condition那个比较好,从上面的的解释中就能看出是前者比较好,毕竟不需要回表查询数据,效率上应该比较快的

下面是在stackoverflow中找到的答案:

4ea5c6d7a48f0be09668dda8e8a4c167.png

附上stackoverflow链接:https://stackoverflow.com/questions/28759576/mysql-using-index-condition-vs-using-where-using-index

2.测试验证

(1)建立一个userinfo表,其字段信息如下图所示:

5ab44258228bdc9ad44e4cebb8b90ef1.png

(2)查询测试

(2.1)测试Using index

1722e763c2fb3cd4cf84c270b9b74dea.png

覆盖索引,但是没有使用查询条件,所以只有Using index

(2.2)测试Using index & Using where

9fd837afce3310aa09e1af7c7b2820d0.png

覆盖索引,但是后面带了查询条件,所以也用了Using where查询索引

(2.3)测试Using index condition

94fc11ecbc38175c3be9dc643626d05c.png

因为本人用的是mysql版本是5.5,所以显示了Using where,如果用5.6以上的版本应该就会显示Using index condition,个人认为,Using index condition其实就是优化了Using where这种情况,有条件的也可以自己写个demo测试一下

以上皆为个人理解,如果有理解错的地方,欢迎指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值