什么是B+树

news2024/11/17 9:26:49

B+树是一种树数据结构。B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。

先来了解一下什么是索引?

一、索引

数据都是存储在硬盘上的,查询数据不可避免的需要进行IO操作。

索引是一种数据结构,又称之为“键(key)”,是存储引擎用于快速找到记录的一种数据结构。类似于书的目录,在查询数据的时候先找目录再找数据,而不是一页一页的翻。索引的存在提升来查询速度,降低来IO操作。

在一张表中可以有多个索引,但索引也不是越多越好。索引虽然可以帮助提升查询速度,但也是有缺点的:

1:当表中有大量数据存在的前提下,创建索引的速度会很慢

2:在索引创建完毕后,对表的查询性能会大幅度提升,但写的性能也会大幅度降低

因此索引不能随便的创建。

二、B+树

如图所示,这就是一个B+树,在非叶子结点上,存储的是一定范围内索引id对应的磁盘地址,叶子结点上存储的是具体的数据。

B+树之所以这么做的意义在于:树一个节点就是一个页,而数据库中页的大小是固定的,所以在页大小固定的前提下,能往一个页中放入更多的节点,相应的树的阶数(节点的子节点树)就会更大,那么树的高度就更矮,如此一来我们查找数据进行磁盘的IO次数有会再次减少,数据查询的效率也会更快。

B+树中各个页之间是通过双向链表连接的,叶子节点中的数据是通过单向链表连接的。

B+树叶子节点的关键字从小到大有序排列,左边节点的结尾数据都会保存右边节点的开始数据的指针,就构成了一个有序链表,在查询大小区间的数据时候更方便,速度更快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习MvvmLight工具

最近学习了一下MvvmLight,觉得有些功能还是挺有特色的,所以记录一下 首先新建也给WPF程序 然后在Nuget里面安装MvvmLightLib 包,安装上面那个也可以,但是安装上面那个会自动在代码里面添加一些MvvmLight的demo ,安装M…

零钱兑换II 组合总和 Ⅳ 爬楼梯(0-1背包)

零钱兑换II 但本题和纯完全背包不一样,纯完全背包是凑成背包最大价值是多少,而本题是要求凑成总金额的物品组合个数! 回归本题,动规五步曲来分析如下: 确定dp数组以及下标的含义 dp[j]:凑成总金额j的货币组…

【MySQL】P10 事务(1)事务执行,提交与回滚

事务执行,提交与回滚基本概念什么是事务?什么是自动提交?错误事务案例解决方案方式一:控制事务方式二:手动提交与回滚自动提交更改为手动提交进行手动提交错误进行回滚基本概念 什么是事务? 每一个SQL语句…

Unity资源热更新框架

什么是热更新? 游戏上线后,玩家下载第一个版本(1G左右或者更大),在之后运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需…

VS2008生产动态库、静态库调用案例

静态库创建静态库打开VS2008创建项目如下&#xff1a;选择静态库创建文件// add.h #ifndef _ADD_H_ #define _ADD_H_#include <stdio.h>#ifdef __cplusplus extern "C" { #endif__declspec(dllexport) int myAdd(int a, int b);#ifdef __cplusplus } #endif#e…

Linux:IO库函数

目录标准库IO函数一、fopen二、fwrite三、fread四、fseek五、fclose在编写程序时&#xff0c;离不开IO操作&#xff0c;最常见的IO操作就是用printf函数进行打印&#xff0c;本文主要介绍的是封装后的IO库函数。 标准库IO函数 常使用的IO库函数如下&#xff1a; 函数作用fop…

u盘系统文件删除后的五种恢复方法

U盘是我们日常生活中使用较为普遍的移动存储设备&#xff0c;由于其便携性和易用性广受人们的欢迎。然而&#xff0c;在我们使用U盘的过程中&#xff0c;经常会出现误删文件的情况&#xff0c;例如本来要作为启动盘的u盘&#xff0c;误删里面的系统文件怎么办&#xff1f;当U盘…

MySQL的同步数据Replication功能

MySQL提供了Replication功能&#xff0c;可以实现将一个数据库的数据同步到多台其他数据库。前者通常称之为主库&#xff08;master&#xff09;&#xff0c;后者则被称从库&#xff08;slave&#xff09;。MySQL复制过程采用异步方式&#xff0c;但延时非常小&#xff0c;秒级…

C51---超声波测距

1.主要实现功能&#xff1a;当手靠近传感器时&#xff0c;灯亮&#xff1b;手离开&#xff0c;灯灭 2.器件&#xff1a;51单片机、HC-SR04超声波测距传感器 3.代码&#xff1a; #include "reg52.h" //距离小于10cm&#xff0c;D5亮&#xff0c;D6灭&#xff0c;反之…

Lombok使用@Builder无法build父类属性

文章目录问题描述解决方案使用示例lombok Builder注解和build父类属性问题1、简介2.使用3、Builder注解对类做了什么&#xff1f;问题描述 实体类使用Lombok的Builder来实现Builder模式&#xff0c;但是如果使用了extend继承&#xff0c;则子类无法通过Builder来Build父类属性…

深度学习应用技巧4-模型融合:投票法、加权平均法、集成模型法

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下&#xff0c;深度学习中的模型融合。它是将多个深度学习模型或其预测结果结合起来&#xff0c;以提高模型整体性能的一种技术。 深度学习中的模型融合技术&#xff0c;也叫做集成学习&#xff0c;是指同时使用多个…

CentOS7.5(1804)安装vsftpd(ftp)

1.准备安装包 1. vsftpd-3.0.2-29.el7_9.x86_64.rpm 2. ftp-0.17-67.el7.x86_64.rpm 可以自行下载,也可从我的博客中下载,下载传送门点 这里 2.安装vsftpd #1. 上传文件到服务器上,比如/home目录 #2. 执行以下命令安装 rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm #3. 启动vsf…

极限的无穷小和无穷大

目录 无穷小&#xff1a; 无穷大&#xff1a; 无穷小&#xff1a; 举几个无穷小量的例子&#xff1a; 以0为极限的意思就是无穷小。 注&#xff1a;无穷小是变量&#xff0c;不能把很小很小的数混为一谈。 2&#xff1a;0是可以作为无穷小的唯一的一个数。 我们进行证明&…

完整教程:使用Spring Boot实现大文件断点续传及文件校验

一、简介 随着互联网的快速发展&#xff0c;大文件的传输成为了互联网应用的重要组成部分。然而&#xff0c;由于网络不稳定等因素的影响&#xff0c;大文件的传输经常会出现中断的情况&#xff0c;这时需要重新传输&#xff0c;导致传输效率低下。 为了解决这个问题&#xff…

【敏捷开发】jenkins「CI持续集成 CD持续部署」

文章目录前言一、安装jenkins1. 部署中的痛点2. 什么是jenkins3. jenkins的安装和配置&#xff08;1&#xff09;下载&#xff08;2&#xff09;安装二、上传到运行服务器1. jenkins构建服务器流程2. 安装jenkins常用插件3. 通过freestyle构建项目4. 将构建服务器上的代码上传到…

ASA材料3D打印服务 抗紫外线材料3D打印服务 抗紫外线模型制作-CASAIM中科院广州电子

3D打印技术又称增材制造&#xff0c;通常是采用数字技术材料打印机来实现的&#xff0c;常在模具制造、工业设计等领域被用于制造模型&#xff0c;后逐渐用于一些产品的直接制造。随着 3D 打印逐渐成为主流生产流程的一部分&#xff0c;ASA抗紫外线材料应运而生。中科院广州电子…

Ubuntu 搭建NextCloud私有云盘【内网穿透远程访问】

文章目录1.前言2.本地软件安装2.1 nextcloud安装2.2 cpolar安装3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5. 结语1.前言 对于爱好折腾的电脑爱好者来说&#xff0c;Linux是绕不开的、必须认识的系统&#xff08;大部分服务器都是采用Linux操作系统&a…

华为OD机试题,用 Java 解【数组二叉树】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

将生成的NYUv2边界GT加载到dataloader中并进行训练

由上一篇我们可以知道&#xff0c;我们生成了一个label_img文件夹&#xff0c;里面存放的是索引对应图片的filename&#xff0c;每个filename里面存放的是GT的40个通道的边缘GT。train里面是这样&#xff0c;test里面也是这样。 加载数据我们要到train文件的dataloader中&…

Azure AD 与 AWS 单一帐户SSO访问集成,超详细讲解,包括解决可能出现的错误问题

本教程介绍如何将 AWS Single-Account Access 与 Azure Active Directory (Azure AD) 相集成。 将 AWS Single-Account Access 与 Azure AD 集成后&#xff0c;可以&#xff1a; 在 Azure AD 中控制谁有权访问 AWS Single-Account Access。让用户使用其 Azure AD 帐户自动登录…