数据库索引

本文详细介绍了数据库索引的概念、作用,包括普通索引、唯一索引、复合索引、聚簇索引和非聚簇索引等类型,并探讨了它们的优缺点。重点讲解了B+树作为索引底层实现的原理,阐述了B+树如何降低磁盘读写代价并优化区间查询。此外,还分析了聚簇索引与非聚簇索引的区别。
摘要由CSDN通过智能技术生成

1、什么是索引

索引是一种特殊的文件,它里面包含对数据表里的所有记录的指针。

数据库索引是一种排序的数据结构,可以协助快速查询更新数据库表中的数据。

2、索引的优缺点

优点:

(1)大大加快数据的检索速度

(2)在查询过程中,使用优化隐藏器,提高系统性能。

缺点:

(1)时间方面:创建和维护索引需要耗费时间,对表中的数据进行增删查改时,索引也需要动态的维护,也会耗费时间。

(2)空间方面:索引是一种文件,需要占用物理空间。

3、MySQL的索引类型

(1)普通索引:即一个索引只包含单个列,一个表可以有多个单列索引。

(2)唯一索引:索引的列的值,必须唯一,但允许有空值。

(3)复合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。

(4)聚簇索引:在InnoDB中,索引B+树的叶子结点存储了整行数据的是 主键索引(也叫作聚簇索引)。也就是说,将数据存储和索引放到了一块,找到了索引,也就找到了数据。

(5)非聚簇索引:在InnoDB中,如果索引B+树的叶子结点存储了主键的值,它就是非主键索引(也叫作非聚簇索引)。

4、聚簇索引和非聚簇索引的区别

非聚簇索引的叶子结点,存储的是该列对应的主键,而不是表中的数据。

5、索引的底层实现

B+树性质:

(1)B+树的每个非叶子结点,存放的元素只用于索引所用,所有数据保存在叶子结点。

(2)n棵子树的结点包含n个关键字,不用来保存数据,而用来保存数据的索引。

(3)所有的叶子结点中,包含了全部关键字的信息,及指向含这些关键字的指针,且叶子结点本身根据关键字的大小,从小到大顺序链接。

(4)所有的非叶子结点可看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。

(5)B+树中,数据对象的插入和删除仅在叶子结点上进行。

(6)B+树有两个头指针,一个是树的根节点,一个是最小关键字的叶子结点。

一个m阶的B+树规定:

(1)有k个子树的中间结点包含k个元素,每个元素不保存数据,只用来索引,所有数据都保存在叶子结点上。

(2)所有的叶子结点中包含了全部元素的信息,以及指向这些元素记录的指针,且叶子结点本身根据关键字的大小,自小而大顺序链接。

(3)所有的中间结点元素都同时存在于子节点,在子节点元素中是最大(最小)元素。

B+树的好处

(1)B+树的磁盘读写代价更低

(2)B+树的数据都存放在叶子结点中,分支结点均为索引,方便扫库,只需扫一遍叶子结点即可。更适用于区间查询。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值