结论(以innodb为例)spa
a、非聚簇索引存储了对主键的引用,若是select字段不在非聚簇索引内,就须要跳到主键索引(上图中从右边的索引树跳到左边的索引树),再获取select字段值blog
b、若是非聚簇索引值重复率高,那么查询时就会大量出现上图中从右边跳到左边的状况,致使整个流程很慢排序
c、若是where值重复率高的字段,select用了limit,只查较少数据,也就是跳的次数不多的状况下,仍是能够建索引的(后来想一想也不必,limit限制了数量,全表扫描也很快,除非字段值是排序的,必须扫描完前面的全部值)索引
d、若是没有3这个前提,则不建议在值重复率高的字段上建索引,由于查询效率低,还须要维护索引it