MySQL索引

数据库索引是提高查询效率的关键数据结构,类似于书的目录。它减少了全表扫描,但占用存储空间且影响DML操作。Hash索引适用于等值查询,而B+树索引支持范围查询和排序,更常见于数据库系统。
摘要由CSDN通过智能技术生成

介绍:

数据库索引是一种特殊的数据结构,用于提高数据库系统的查询效率和性能。它是对数据库表中一列或多列的某些值进行排序的一种结构,可以快速定位并访问数据。

类比于书中的目录,每个章节都有一个对应的页码,通过查找目录可以快速定位到所需要的内容。数据库索引也是如此,它将数据按照一定规则分类,并记录数据在分类中的位置。当进行查询时,数据库会使用索引来快速定位到符合搜索条件的数据位置,避免了全表扫描,加快了查询速度。

缺点:

数据库索引虽然可以提高查询效率,但是也会占用一定的存储空间,并且会影响插入、更新、删除等操作的性能,同时也需要考虑索引的维护成本;---修改操作需要维护索引

常见的索引

Hash索引和B+树索引区别

  • 数据存储方式

    Hash索引将每个索引键值与一个地址映射起来,也就是散列值,然后通过散列函数将散列值转换为一个物理地址,存储于哈希表中。而B+Tree索引则是基于树状结构实现,将每个索引键值按顺序插入到一棵平衡树中,通过遍历树状结构来查找数据。

  • 适用场景

    Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,< ,...)不支持模糊查询,无法利用索引完成排序操作。B+tree支持范围匹配及排序操作,可以使用前缀匹配完成模糊查询;

  • 索引维护和存储空间

    Hash索引对索引数据的增加、删除和更新操作更加高效,因为它只需要重新计算散列值即可。但是,由于其数据存储方式是随机的,所以它需要更大的内存空间来避免散列冲突。B+Tree索引则需要进行更多的数据页分裂、合并等操作,因此其维护成本更高,但是在对存储空间的利用率方面更加优秀,因为相邻的节点存储于同一个数据页中。

  • 大部分存储引擎都支持B+Tree索引,只有Memory支持Hash索引

B+数索引数据结构图:

MySQL的B+树索引结构与普通B+树结构稍微有点区别,叶子节点增加了 双向指针,方便范围查找等功能。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值