关于最左前缀匹配原则
来源:3-9 索引额外问题之最左匹配原则的成因
宝慕林039164
2019-10-08
按照老师上课讲的
对应的我这里建立的索引是 (user_id
,number
,createtime
)
查询语句里又包括:user_id =1 and number>10010 and createtime=“2015-02-04 13:22:35”
按照结论应该是createtime是用不到索引的,为什么这里却使用了索引 myindex呢?
这是所使用到的表
添加索引
alter table orders add INDEX `myindex` (`user_id`,`number`,`createtime`)
进行explain分析
explain SELECT * FROM mybatis.orders where user_id =1 and number>10010 and createtime="2015-02-04 13:22:35";
结果不符合预期
写回答
1回答
-
同学好,这里的最左匹配说的是,当我们搜索d,也就是说搜索createtime的时候,是不会用到里面的联合索引的,但是搜索user_id和number的时候,是可以先走相关的索引的,因为(a,b,c)索引就会意味着(a)(a,b)(a,b,c)都能用到它。我们的优化器会利用索引的一部分,剩下的会进行从这些检索到的内容里面继续筛选。
012019-10-11
相似问题