1.表结构如下:
其中 equipid和signalid是主键,然后我执行两个查询:
会发现第一个查询语句只用了equipid过滤条件进行过滤,使用explain extended查看查询信息,发现竟然没有用到索引。
而第二个语句用了两个主键的字段进行过滤,就出现了使用主键索引的情况。
再看看下面这个图:
单的一个查询,没有任何过滤条件,也是没有使用任何索引的。
我的问题是:假设一个主键有两个字段或者更多,而查询的时候只用了其中一个或者几个?在速度上有多大的影响?
第二,在没有过滤条件的情况下,也没有用到索引,查询的时候就是全表扫描?
如果你的索引是 key( equipid,signalid), where 条件为 equipid=? 是可以使用索引的,而 where 条件 signalid=? 是不会使用索引,也就是说如果你是复合索引仅会使用“最左前缀”,mysql的innodb和myisam(?)会遵循这个原则,其他存储引擎不太清楚。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。