一、索引的利处
很多朋友对数据库中的索引的认识可能主要还是只限于“能够提高数据检索的效率,降低数据库的IO成本”。
确实,在数据库中个表的某个字段创建索引,所带来的最大益处就是将该字段作为检索条件的时候可以极大的提高检索效率,加快检索时间,降低检索过程中所需要读取的数据量。但是索引所给我们带来的收益只是提高表数据的检索效率吗?当然不是,索引还有一个非常重要的用途,那就是降低数据的排序成本。
我们知道,每个索引中索引数据都是按照索引键键值进行排序后存放的,所以,当我们的Query语句中包含排序分组操作的时候,如果我们的排序字段和索引键字段刚好一致,MySQL Query Optimizer就会告诉mysqld在取得数据之后不用排序了,因为根据索引取得的数据已经是满足客户的排序要求。
那如果是分组操作呢?分组操作没办法直接利用索引完成。但是分组操作是需要先进行排序然后才分组的,所以当我们的Query语句中包含分组操作,而且分组字段也刚好和索引键字段一致,那么mysqld同样可以利用到索引已经排好序的这个特性而省略掉分组中的排序操作。
继续阅读MySQL索引使用