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

    文章

    6058

    浏览量

    86832
  • 存储
    +关注

    关注

    12

    文章

    3404

    浏览量

    84279
  • 数据结构
    +关注

    关注

    3

    文章

    491

    浏览量

    39747
  • MySQL
    +关注

    关注

    1

    文章

    642

    浏览量

    25687
  • 索引
    +关注

    关注

    0

    文章

    48

    浏览量

    10350
收藏 人收藏

    评论

    相关推荐

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

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

    详解mysql索引

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

    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里的查询条件是姓名 name = '张三
    发表于 07-28 15:30

    XML数据分页索引技术研究

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

    教育网BBS搜索引擎设计与实现

    索引擎搜索的盲点,本文系统介绍了根据教育网BBS 的特点建立BBS 搜索引擎的关键技术和实现方法。关键词:搜索引擎,Telnet 协议,BBS,
    发表于 06-17 11:28 14次下载

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

    索引开发包深入研究的基础上,设计了多索引索引方案,有效地减少了索引时间,提高了索引效率;在建立倒排索引时,通过对索引表中词条排序过程
    发表于 12-18 16:27 13次下载

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

    索引擎的三个核心部分即网络蜘蛛、网页索引、搜索进行了实现索引和搜索部分借助Lucene全文搜索引擎库中的Java类进行实现实现索引擎的个性化,使搜
    发表于 05-07 14:14 35次下载
    基于JAVA技术的搜<b>索引</b>擎的研究与<b>实现</b>

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

    实现索引的相关关键技术。在充分分析分布式存储特征的基础上,提出了分布式索引设计和实现的关键点,并结合分布式存储系统的特点
    发表于 12-25 10:01 0次下载
    集群环境下分布式<b>索引</b>的<b>实现</b>

    Redis基本类型和底层实现

    底层实现。事实上,Redis的高效性和灵活性正是得益于对于同一个对象类型采取不同的底层结构,并在必要的时候对二者进行转换;以及各种底层结构对内存的合理利用。
    发表于 11-25 15:11 4257次阅读
    Redis基本类型和<b>底层</b><b>实现</b>

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

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

    基于Lucene实现全文搜索引擎MYSearch的构建

    实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
    的头像 发表于 07-25 08:07 2352次阅读
    基于Lucene<b>实现</b>全文搜<b>索引</b>擎MYSearch的构建

    Linux socket底层的相关实现

    底层的相关实现
    发表于 10-13 16:56 429次阅读
    Linux socket<b>底层</b>的相关<b>实现</b>

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

    索引实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。而且索引是一个文件,它是要占据物理空间的。 MySQL索引的建立对
    的头像 发表于 10-09 10:19 150次阅读