其他分享
首页 > 其他分享> > 索引优化策略(中)

索引优化策略(中)

作者:互联网

我们已经知道了,MYSQL中最常见的两种索引类型的,主要特点,也知道了不同索引的优化策略,下面我们就来看看,

如何使用索引来优化我们的查询了,关于如何优化查询,我们在下面的查询优化章节呢,还有更为详细的讨论,这里只举

几个常用的索引的优化查询的方法,前面说过了B树索引,是按照键值的顺序来存储的,不但可以利用B树索引来查找我们

所需要的数据,同时还可以利用B树索引,来做排序,下面我们就先来看看,如何来利用B树索引呢,来优化排序操作,MYSQL有两种

方式可以生成这种有序的结果,第一种是通过排序操作,另一种是按照索引顺序来扫描数据,如果explain所执行的计划中所显示的,

type列为index,说明MYSQL利用了索引扫描来做排序,使用索引扫描来做排序的时候呢,由于从只需要一条索引记录,移动到了下一条

索引记录,所以通常来说是很快的,但是如果想用索引扫描的方式,来优化查询呢,实际上并不太容易,我们先来看看使用索引来优化

排序,所需要的条件,大家就知道了

首先想要利用索引来进行排序,首先索引列的顺序一定要先要和order by字句的顺序要完全一致,而且索引中

所有列的方向,不管是升序还是降序,和order by中子字句对应的方向也要完全一致,最后在多个表的关联查询中,

order by中的字段呢,要全部在关联表中的第一张表中,那这些条件是不是很苛刻呢,我们下面在事件中呢,去看一看什么样的

查询是可以使用到索引来进行排序的

我们先来看一下这个表的表结构

show create table rental

这张表一共有这么几个列,同时存在rental_id,rental_date这样的索引,那么我们来看看,可以使用索引排序的

第一种情况呢,由于rental是一个innodb存储引擎的表,而对于innodb存储引擎的表来说呢,数据的这种逻辑呢,

和组件顺序是一致的,所以我们可以使用主键来进行排序,如下面的这个排序所示,我们使用order by,rental_id

也就是主键来进行排序

explain select * from rental where rental_date > '2005-01-01' order by rental_id;

大家可以看到

 

标签:策略,优化,查询,索引,排序,rental,order
来源: https://blog.csdn.net/Leon_Jinhai_Sun/article/details/97614237