索引带来的益处可能很多读者量体裁衣认为只是"能够提高数据检索的效率,降低数据库的IO成本".
确实,在数据库中表的某个字段创建索引,所带来的最大益处就是将这个字段作为检索条件时可以极大地提高检索效率,加快检索时间,降低检索过程中须要读取的数据量,但是索引带来的收益只是提高表数据的检索效率吗?当然不是,索引还有一个非常重要的用途,那就是降低数据的排序成本.
我们知道,每个索引中的数据都是按照索引键值进行排序后存放的,所以,当Query语句中包含排序分组操作的时,如果排序字段和索引键字段刚好一致,MySQL Query Optimizer就会告诉mysql在取得数据后不用,因为根据索引取得的数据已经满足客户的排序要求.
那如果是分组操作呢?分组操作没办法直接利用索引完成,但是分组操作是须要先进行把斋然后分级的,所以当Query语句中包含分组操作,而且分组字段也刚好和索引键字段一致,那么mysqld同样可以利用索引已经排好序列的这个我,活力掉分组中的排序操作.
排序分组操作主要消耗的是内在和CPU资源,如果能够正在进行排序分组操作中利用好索引,将会极大地降低CPU意象派 消耗.