【mysql】<高性能mysql> 索引相关的疑问
下图中标红的部分表达的是什么意思?
Extra中的Using where 是指在索引中使用了过滤? 还是说在索引中筛选完之后使用了过滤? 看不太懂
个人理解 type为range 并且 extra中有using index 所以肯定只是扫描了索引, 并且using where是在索引中进行的过滤 ;
只有当type为all,extra中只有using where的时候, 才是回表扫描并在表中进行的过滤!
不知道理解的对么?
回答
你看看 mysql 架构,存储引擎在最底层,actor_id<5 存储引擎就 using index(actor_id)了,但是引擎使用的索引不能过滤所有无效行(<>这个条件不能发送给存储引擎),所以获得数据返回给mysql服务层,这一层using where 解析 <> 1 。
mysql5.6之后的ICP特性,可以把检查条件比如<>发送给存储引擎层,不符合条件的数据不读取。
以上是 【mysql】<高性能mysql> 索引相关的疑问 的全部内容, 来源链接: utcz.com/a/72424.html