【数据结构】数据库索引(B树,B+树)简介

前言

仅做学习记录,侵删

一、什么是索引

索引是数据库表中的字段的索引,所谓的索引就是在表的字段上添加的,每个字段都可以添加索引来提高查找效率,也可以多个字段联合添加一个索引。

参考字典的实现,索引相当于字典的目录,通过目录缩小查找范围。

其本质是B 树, B+树

二、 什么是B树和B+树,二者的区别是什么?

B树(B-Tree)

B树是一种平衡的多路搜索树,它具有以下特点:

  1. 节点结构:B树的每个节点可以有多个子节点,通常每个节点包含多个键值和多个指针,这些指针指向子节点。
  2. 平衡性:B树是平衡的,这意味着从根节点到每个叶子节点的路径长度相同。
  3. 键值分布:B树中的键值是有序的,并且每个节点中的键值会分布在所有子节点中。
  4. 搜索效率:由于B树是平衡的,所以搜索效率很高,时间复杂度为O(log n)。
  5. 插入和删除:在B树中插入和删除节点时,可能需要进行节点的分裂和合并操作以保持树的平衡。

B+树(B+-Tree)

B+树是B树的一种变体,它具有以下特点:

  1. 节点结构:B+树的内部节点不存储数据,只存储键值和子节点指针。数据只存储在叶子节点中。
  2. 非叶子节点:B+树的非叶子节点只存储键值和指向子节点的指针,不存储实际的数据。
  3. 叶子节点链表:B+树的所有叶子节点是相互链接的,形成一个链表,这使得范围查询更加高效。
  4. 查询效率:由于数据都存储在叶子节点,并且叶子节点之间是链表连接的,所以B+树在进行范围查询时非常高效。
  5. 空间利用:B+树的非叶子节点不存储数据,因此可以存储更多的键值,提高了空间利用率。
  6. 插入和删除:在B+树中插入和删除节点时,同样可能需要进行节点的分裂和合并操作。

B树和B+树的区别

  1. 数据存储位置:B树的节点可以存储数据,而B+树的数据只存储在叶子节点。
  2. 查询效率:B+树由于叶子节点之间的链表结构,使得范围查询更加高效。
  3. 空间利用率:B+树的非叶子节点不存储数据,因此可以存储更多的键值,提高了空间利用率。
  4. 插入和删除:B+树在插入和删除时,由于叶子节点是链表结构,操作可能更加简单。
  5. 适用场景:B树适用于需要同时进行点查询和范围查询的场景,而B+树由于其高效的范围查询性能,更适合用于文件系统的索引和数据库索引。
相关推荐
嘘神秘用2 小时前
布:AI 驱动的 Redis 客户端,更快、更直观
数据库·人工智能·redis
东北小狐狸-Hellxz4 小时前
Redis 哨兵搭建+ACL权限控制
数据库·redis
研究员子楚5 小时前
GEO行业发展标准体系白皮书V2.0-第09卷 · 适配篇:硅基主权伦理宪章与行业适配宣言
数据库·人工智能·geo
CoderMeijun5 小时前
一条SQL查询语句在MySQL中是如何执行的
mysql·sql执行流程·连接器·mysql架构·索引下推·执行器
l134062082356 小时前
鸿蒙实战:RDB 数据库设计与 DatabaseService
数据库·华为·harmonyos·鸿蒙系统
山峰哥6 小时前
数据库工程与索引策略实战指南‌
服务器·数据库·sql·oracle·深度优先
谙忆6 小时前
图片版权保护工程实战:明水印、盲水印(DCT隐写)、Referer防盗链与签名URL怎么落地
数据库
KaMeidebaby7 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
xfhuangfu7 小时前
19c CDB架构下的数据库启动和停止
数据库·架构
神道君天下7 小时前
填充与积累:积分与面积的可视化
数据库·oracle