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

    文章

    6898

    浏览量

    88832
  • 存储
    +关注

    关注

    13

    文章

    4263

    浏览量

    85675
  • 数据结构
    +关注

    关注

    3

    文章

    573

    浏览量

    40093
  • MySQL
    +关注

    关注

    1

    文章

    802

    浏览量

    26445
  • 索引
    +关注

    关注

    0

    文章

    59

    浏览量

    10463
收藏 人收藏

    评论

    相关推荐

    详解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次下载

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

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

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

    本文在对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 4469次阅读
    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 6218次阅读

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

    引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
    的头像 发表于 07-25 08:07 2712次阅读
    基于Lucene<b class='flag-5'>实现</b>全文搜<b class='flag-5'>索引</b>擎MYSearch的构建

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

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

    redis数据结构的底层实现

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

    Mysql索引是什么东西?索引有哪些特性?索引是如何工作的?

    作为开发人员,碰到了执行时间较长的 sql 时,基本上大家都会说” 加个索引吧”。但是索引是什么东西,索引有哪些特性,下面和大家简单讨论一下。
    的头像 发表于 12-24 16:20 1213次阅读
    Mysql<b class='flag-5'>索引</b>是什么东西?<b class='flag-5'>索引</b>有哪些特性?<b class='flag-5'>索引</b>是如何工作的?