MySQL索引

MySQL索引概述

索引是帮助MySQL高校获取数据的有序数据结构,在数据之外数据库系统还维护着索引这种数据结构,索引是以某种方式指向数据,可以在索引上实现高级查找算法。
索引类似于书籍的目录,可以帮助我们在大量数据中快速找到所需的信息。在MySQL中,索引可以基于一个或多个列创建,以加快对数据的访问速度。

优点

  • 提高数据检索的效率,减少数据库I/O。
  • 通过索引对数据进行排序,降低数据的排序成本,降低CPU的消耗。
  • 加快表与表之间的连接:在执行连接操作时,如果被连接的列上有索引,那么数据库系统可以更快地找到匹配的行。

缺点

  • 占用额外的磁盘空间:每个索引都需要占用额外的磁盘空间。因此,对于包含大量数据的表,维护索引可能会消耗大量的存储空间。
  • 索引提高了查询效率,同时降低了表的更新效率。
  • 可能会引发额外的维护开销:随着数据的更新和删除,索引可能需要被重新组织或重建,这会增加数据库的维护成本。

MySQL索引结构

MySQL索引是在存储引擎中实现的,不同的存储引擎有不同的索引结构。

B+Tree索引

MySQL中的B+tree索引结构是一种平衡的多路查找树,用于高效地存储和检索数据。B+tree在每个内部节点上存储一定数量的关键字,并将节点分为多个子树。在B+tree中,非叶子节点不存储数据,所以非叶子节点的key也会出现在叶子节点中,并保存自己的数据。所有的叶子节点都位于同一层,并且通过指针相互连接,形成顺序链表,提高区间访问性能。
在MySQL中,InnoDB存储引擎使用B+tree作为其默认的索引结构。

  • B+Tree特点
    1. 平衡性:B+tree保持平衡,无论插入、删除还是更新操作,树的高度保持相对稳定,从而保证了查询效率
    2. 叶子节点连接:所有的叶子节点位于同一层,并通过指针相互连接。这使得范围查询和顺序访问更加高效。
    3. 非叶子节点不存储数据:B+tree的非叶子节点不存储数据。数据只存储在叶子节点上,这使得非叶子节点可以存储更多的关键字,从而提高了查询性能。
    4. 指针和链接:在B+tree中,叶子节点通过指针相互连接,形成一个链表结构。这使得顺序访问更加高效,尤其是在执行范围查询时。
    5. 数据排序:由于B+tree的特性,叶子节点中的数据按照关键字的顺序进行排序存储,提高了排序操作性能。

Hash索引

R-Tree索引

Full-Text索引

未完成…

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值