0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

索引的底层实现详解

麦辣鸡腿堡 来源:程序员库森 作者:程序员库森 2023-10-09 10:26 次阅读

说一说索引的底层实现?

Hash索引

基于哈希表实现,只有精确匹配索引所有列的查询才有效,对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hashcode),并且Hash索引将所有的哈希码存储在索引中,同时在索引表中保存指向每个数据行的指针。

图片

B-Tree索引(MySQL使用B+Tree)

B-Tree能加快数据的访问速度,因为存储引擎不再需要进行全表扫描来获取数据,数据分布在各个节点之中。

图片

B+Tree索引

是B-Tree的改进版本,同时也是数据库索引索引所采用的存储结构。数据都在叶子节点上,并且增加了顺序访问指针,每个叶子节点都指向相邻的叶子节点的地址。相比B-Tree来说,进行范围查找时只需要查找两个节点,进行遍历即可。而B-Tree需要获取所有节点,相比之下B+Tree效率更高。

B+tree性质:

n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。

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

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

B+ 树中,数据对象的插入和删除仅在叶节点上进行。

B+树有2个头指针,一个是树的根节点,一个是最小关键码的叶节点。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6514

    浏览量

    87613
  • 存储
    +关注

    关注

    12

    文章

    3863

    浏览量

    84683
  • 数据结构
    +关注

    关注

    3

    文章

    564

    浏览量

    39905
  • MySQL
    +关注

    关注

    1

    文章

    776

    浏览量

    26008
  • 索引
    +关注

    关注

    0

    文章

    59

    浏览量

    10408
收藏 人收藏

    评论

    相关推荐

    Altium顶层和底层互换

    1. 在顶层时,编辑一选中一当前层上所有的: 2. 编辑→选择的存储器→存储-1(快捷方式ctrl+1): 3. 在空白处点鼠标左键取消选择,切换到底层。方法同第一步:编辑-选中-当前层上所有的。(图文详解见附件)
    发表于 09-17 11:39

    Altium如何打印清晰的底层丝印

    在日常PCB设计中,在打印焊接图纸时经常遇到底层丝印层在灰度模式下,色彩非常浅,辨识度很不好;下面就为大家介绍下如何打印清晰的底层丝印;方法如下:为了方便展示,先准备一个原始PCB,如下图:(图文详解见附件)
    发表于 11-02 11:18

    Linux信号底层实现步骤

    Linux:信号的底层实现机制
    发表于 03-23 11:17

    详解mysql索引

    mysql索引简介
    发表于 04-13 06:50

    labview如何实现间隔索引功能

    labview如何实现间隔索引功能,比如有在循环里有10个数,1 2 3.。.。8 9 10,我想索引1 3 5 7 9或者 2 4 6 8 10,请大神指导
    发表于 07-07 11:05

    如何去实现二步索引法OSD电路?

    二步索引算法的原理及特点是什么?如何去实现二步索引法OSD电路?如何去验证OSD电路?
    发表于 05-06 07:08

    MySQL数据库索引底层是怎么实现

    快?底层怎么实现的?2.索引失效的情况有哪些?失效的原因是什么?简洁描述索引是快速查找特定列值的行数据的,一种优化查询的数据结构。查找特定列值。例如一条sql里的查询条件是姓名 nam
    发表于 07-28 15:30

    XML数据分页索引技术研究

    对海量XML文档的索引查询技术进行研究,提出一种XML数据分页索引查询实现方法。该方法把页面元素标记数量作为数据分页依据,建立XML数据的分页索引,并在该分页
    发表于 03-31 10:07 10次下载

    化工搜索引索引库的研究和实现

    本文在对Lucene 全文检索、索引开发包深入研究的基础上,设计了多索引索引方案,有效地减少了索引时间,提高了索引效率;在建立倒排
    发表于 12-18 16:27 13次下载

    基于JAVA技术的搜索引擎的研究与实现

    本文还利用Java技术对搜索引擎的三个核心部分即网络蜘蛛、网页索引、搜索进行了实现索引和搜索部分借助Lucene全文搜索引擎库中的Java
    发表于 05-07 14:14 35次下载
    基于JAVA技术的搜<b class='flag-5'>索引</b>擎的研究与<b class='flag-5'>实现</b>

    Redis基本类型和底层实现

    简单介绍了Redis的五种对象类型和它们的底层实现。事实上,Redis的高效性和灵活性正是得益于对于同一个对象类型采取不同的底层结构,并在必要的时候对二者进行转换;以及各种底层结构对内
    发表于 11-25 15:11 4353次阅读
    Redis基本类型和<b class='flag-5'>底层</b><b class='flag-5'>实现</b>

    集群环境下分布式索引实现

    针对分布式存储系统上使用非主键访问数据带来的性能问题,探讨在分布式存储系统上实现索引的相关关键技术。在充分分析分布式存储特征的基础上,提出了分布式索引设计和实现的关键点,并结合分布式存
    发表于 12-25 10:01 0次下载
    集群环境下分布式<b class='flag-5'>索引</b>的<b class='flag-5'>实现</b>

    Java底层实现,CPU还有10个术语!

    Java底层实现——CPU的10个术语
    的头像 发表于 03-28 14:14 5924次阅读

    索引是什么意思 优缺点有哪些

    的数据结构,以协助快速查询、更新数据库表中数据。索引实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。而且
    的头像 发表于 10-09 10:19 1449次阅读

    redis数据结构的底层实现

    Redis是一种内存键值数据库,常用于缓存、消息队列、实时数据分析等场景。它的高性能得益于其精心设计的数据结构和底层实现。本文将详细介绍Redis常用的数据结构和它们的底层实现。 Re
    的头像 发表于 12-05 10:14 316次阅读