mysql笔记七:索引的作用

关键字:查询、排序、分组、缺点

7.1、用于查询 where

聚簇索引是Mysql自动建立在主键上的索引,我们想要对某些列建立自己的索引,就需要建二级索引,一般会对多个列建立联合索引,对于二级联合索引在查询的时候,在以下情况下可以使用上索引:

例如我们对某个表的A、B、C列建立了联合索引,idx_A_B_C,我们称A为索引左边的列。

查询能用上索引的情况是:在每一个查询条件检索后,查询出来的数据在B+树叶子节点上,数据是连续的话,那么就可以使用该索引。

(1)精确匹配:where A=’a’ [and B=’b’] [and C=’c’],对于这样的搜索。当索引左边的列A进行匹配后,检索的结果在B+树叶子节点上,数据连续,所以可以使用索引,继续分析B、C同理。

       注:这种全值匹配,where子句条件顺序不影响执行过程。

(2)左模糊搜索列前缀:where A like ‘a%’

       注:如果需要右模糊匹配,可以将数据在表中逆向存储,然后使用左匹配。

(3)匹配范围值:where A > ‘a1’ and A < ‘a2’,同理。

7.2、用于排序 order by

由于B+树上的数据是经过排序好的数据,如果我们要按照某索引列的顺序进行排序,那么可以直接使用该索引来排序(前提是查询的列在索引列中,不需要进行回表操作,如果需要回表的话,mysql会计算成本决定是否使用索引)。

在内存或磁盘中对查出来的数据进行排序,称为文件排序(file sort)。使用索引排序可以避免文件排序,文件排序速度是非常慢的。

7.3、用于分组 group by

因为B+树上的数据是排序好的,也就是分组好的。那么可以直接使用B+树完成分组操作。

7.4、索引的缺点

建立索引对查询、排序、分组都有很大的帮助,但是索引有如下的缺点

(1)索引本身会占用大量的硬盘空间;

(2)在对数据进行增删改的时候,需要对索引的B+树进行维护,比较消耗时间。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值