mysql 组合索引
使用好组合索引能大大提高查询的效率
key(a1,a2,a3)
组合索引可以理解为从左到右依次命中,按顺序,查询命中的越多,效率越高;
a1,a2,a3的顺序很关键,能更好的区分数据的字段放在前面。
如果查询中没有使用字段a2或者查询是!=a2,则a2索引不能被使用,a3索引也随之不能被使用。
例如有如下组合索引
key(nh_id,coin,date)
第一个查询有nh_id和date,但是只命中了nh_id这个索引,扫描行数48万行,大概需要0.5秒以上。
第二个查询加了coin查询,命中key(nh_id,coin,date)三个索引,只扫描了7万行数据
所以说建索引的时候,要考虑都会用的哪些查询,有些查询经常放到一起使用的时候,考虑组合索引;
对了,如果在第一个查询中,分别给nh_id和date建立单独的索引,然后用nh_id和date去查询,依然要扫描48万行数据,只是用了nh_id索引,而并未使用date索引,不知为何。