news 2026/6/15 15:26:18

索引的原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
索引的原理

一、索引的核心思想:空间换时间

  1. 代价:索引需要占用额外的存储空间,并且会在数据增删改时引入额外的维护开销。

  2. 收益:通过预先建立并维护一个更小的、针对性更强的数据结构,使得查询时能以远快于遍历全表的速度定位到目标数据。

二、索引的工作原理(类比字典)

以汉语字典为例:

  • 表数据:字典中所有的汉字及其解释(相当于数据库表中的所有行)。

  • 索引:字典的拼音检字表部首笔画目录

  • 工作流程

    1. 你要查“张”字。

    2. 你不会从第一页开始逐页翻找(全表扫描)。

    3. 你会先查拼音索引,找到“zhang”对应的页码范围,或者查部首索引,找到“弓”部对应的页码。

    4. 然后直接翻到该页码附近,快速找到“张”字(索引定位)。

在数据库中,这个过程被抽象为:

  1. 索引创建:数据库提取指定列(或列组合)的值,并根据特定的数据结构(如B+树、哈希表)进行组织,形成一个独立的索引文件。每条索引记录包含:索引键值+指向对应数据行位置的指针

  2. 索引查询

    • 当执行带有查询条件的SQL时(如WHERE name = ‘张三’),数据库优化器会先判断是否有可用的索引。

    • 如果有,则访问索引结构,利用其高效的查找算法(如在B+树中进行二分查找、在哈希表中直接计算地址)快速找到键值‘张三’及其对应的数据行指针。

    • 最后,通过指针直接定位并读取磁盘上的完整数据行。

三、两种主要索引实现原理的简要对比

虽然索引的核心思想一致,但不同数据结构决定了其特性和适用场景。

索引类型核心原理工作方式类比
哈希索引散列映射。对索引键值应用哈希函数,计算出一个唯一的(或近似唯一的)哈希码,直接映射到数据行的存储地址。类似于电话簿的人名索引。你知道“张三”的名字,通过名字的拼音(哈希计算)直接定位到其电话号码(数据地址)。只适合精确匹配
B+树索引平衡多路搜索树。所有键值在树中有序存储,非叶子节点存放键值和子节点指针,叶子节点存放键值、数据指针,并形成双向链表。类似于教材的目录。目录(索引)本身有章、节、小节的层级结构(树形),并且页码顺序排列。你可以快速定位到某一章(范围查找),也可以顺着链表翻到下一页。适合精确查找、范围查找和排序
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:56:20

详细分析线程池上下文的基本知识(附Demo)

目录前言1. 基本知识2. 父子线程数据不同3. 父子线程数据相同前言 Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 本意大概…

作者头像 李华
网站建设 2026/6/15 12:56:02

16、深入探索 XML:从基础概念到 SQL Server 实践

深入探索 XML:从基础概念到 SQL Server 实践 1. XML 基础概念 XML,即可扩展标记语言,是一种元语言,用于定义其他语言,这些被定义的语言被称为标记语言。XML 文档是通过标记数据创建的,即将数据封装在开始标签和结束标签之间。这些标签定义的元素形成层次结构,使 XML 文…

作者头像 李华
网站建设 2026/6/14 1:57:38

Java毕设选题推荐:基于springboot的旅游网站系统的设计与实现基于springboot的旅游管理系统,在线旅游管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/15 12:54:39

计算机Java毕设实战-基于SpringBoot +Vue的动漫推荐系统设计与实现(协同过滤推荐算法)基于协同过滤算法的动漫推荐系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/13 16:52:23

麦多福生鲜超市库存管理信息系统sb+v

源码可s领取!!!麦多福生鲜超市库存管理信息系统基于 Spring Boot(SB)与 Vue.js(V)构建,旨在为麦多福生鲜超市提供精准、高效的库存管理解决方案,确保生鲜产品的新鲜度与供应稳定性,降低库存成本…

作者头像 李华
网站建设 2026/6/15 12:53:45

Java计算机毕设之基于Springboot+Vue的旅游推荐系统设计与实现基于springboot的旅游网站系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华