mysql explain解析一 extra中的using index,using where,using index condition
1.简单介绍
using index 和using where只要使用了索引我们基本都能经常看到,而using index condition则是在mysql5.6后新加的新特性,我们先来看看mysql文档对using index condition的描述
附上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中找到的答案:
附上stackoverflow链接:https://stackoverflow.com/questions/28759576/mysql-using-index-condition-vs-using-where-using-index
2.测试验证
(1)建立一个userinfo表,其字段信息如下图所示:
(2)查询测试
(2.1)测试Using index
覆盖索引,但是没有使用查询条件,所以只有Using index
(2.2)测试Using index & Using where
覆盖索引,但是后面带了查询条件,所以也用了Using where查询索引
(2.3)测试Using index condition
因为本人用的是mysql版本是5.5,所以显示了Using where,如果用5.6以上的版本应该就会显示Using index condition,个人认为,Using index condition其实就是优化了Using where这种情况,有条件的也可以自己写个demo测试一下
以上皆为个人理解,如果有理解错的地方,欢迎指出
最新文章
- HDU1434(终于用优先队列a了一题。。。了解度+1)
- 对于大数据量的Json解析
- APP更新名称
- vsftpd 修改默认目录
- [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler
- html+css源码之实现登录弹出框遮罩层效果
- 第二次作业----自学c++的选择与计划
- Eclipse 发布网站到linux的tomcat
- 【问题解决记录】Error: Cannot find module '@ionic/app-scripts'
- js 消抖(debounce)与节流(throttle)
- Docker学习笔记 - Docker容器的网络基础
- C#学习-属性是对字段的扩展
- 开始写博客,学习Linq(4)
- Adobe Acrobat Pro DC破解
- 关于Java类和包的那些事
- dj 中间件
- (转)Python3.5——装饰器及应用详解
- HDU 4764:Stone(巴什博弈)
- 10G个64bit整数,找出中位数
- word2vec参数