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索引,不知为何。

posted @ 2018-03-23 17:50  白尼玛砸缸  阅读(289)  评论(0编辑  收藏  举报