关于数据结构B+TREE 和 HASH的整理

一、B+TREE

B+Tree是一种树数据结构,是B-Tree的变种,属于n叉排序树,每个节点通常有多个孩子。

B+Tree是和B-Tree相比,B+Tree的所有的数据都会出现在叶子节点上,并且叶子节点会形成一个单向链表,非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的。

在MySQL的索引中,对原本的B+Tree进行了优化,MySQL给每个叶子节点加了一个指针,这个指针会指向它的下一个邻居叶子节点。然后,所有的叶子节点就通过这些指针连成了一个大圈圈,变成一个双向的循环链表。当我们想要查找某个范围内的数据时,可以顺着这个“链表”快速地找到所有相关的数据,这就而不需要再从根节点开始重新查找。而且,如果我们想要对数据进行排序,也可以利用这个“链表”,因为它已经是按照某种顺序排列好的了。

相对Hash索引,B+tree支持范围匹配及排序操作。

二、HASH

HASH采用键值对的方式,哈希(hash)比树(B-Tree)更快,原因就是Hash索引的工作方式其实就像我们生活中的电话本或者地址簿。想象一下,你有一本电话本,里面记录了每个人的联系方式。为了快速找到某个人的联系方式,电话本不是按照人名首字母或者姓氏笔画排序,而是用了一种特别的方法给每个人编了一个号码(这就是哈希值)。

现在,你想找某个朋友的联系方式,你只需要查看电话本前面的索引(哈希函数),找到这个朋友对应的号码(哈希值)。然后,你直接翻到电话本中对应号码的位置,就能迅速找到这个朋友的联系方式(数据)。

所以,Hash索引就是利用一个特殊的编号方法(哈希函数),给每条数据编一个独特的号码(哈希值)。这样,当你需要找某条数据时,只需要用这个号码(哈希值)就能在固定的位置(固定大小的数组)快速找到它,而不需要一页一页地翻找。这种方法非常快捷,但缺点是,如果两个人的号码(哈希值)相同,你就需要再仔细看一下,确保找到的是你要找的那个人(解决哈希冲突)。

对比B+TREE,Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,< ,...),不支持排序操作,在一般情况下查询效率高。

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

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

相关文章

C++map容器关联式容器

Cmap 1. 关联式容器 vector、list、deque、forward_list(C11)等STL容器&#xff0c;其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身&#xff0c;这样的容器被统称为序列式容器。而map、set是一种关联式容器&#xff0c;关联式容器也是用来存储数据的&#xff0…

日期问题,

日期问题 ac代码 #include <cstdio> #include <iostream>using namespace std;int days[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check_valid(int year, int month, int day) {if (month 0 || month > 12) return false;if (day 0) …

【开发】模型部署笔记

目录 模型量化 模型量化 1、模型量化优点 低精度模型表示模型权重数值格式为FP16&#xff08;半精度浮点&#xff09;或者INT8&#xff08;8位定点整数&#xff09;&#xff0c;但是目前低精度往往就指代INT8。常规精度模型则一般表示模型权重数值格式为FP32&#xff08;32位…

求数组最大值

#include <bits/stdc.h> using namespace std; int main(){int a[4]{1,2,3,4};cout<<*max_element(a,a4);return 0; }

策略模式详解

策略模式 1 概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进…

JavaScript的跳转传参方式

在JavaScript中&#xff0c;页面跳转并传递参数通常可以通过几种不同的方式来实现。下面是一些常见的方法&#xff1a; 1.URL参数&#xff08;Query String&#xff09; 这是最常见的方式&#xff0c;通过在URL的末尾添加参数来实现。例如&#xff1a; javascriptwindow.loc…

gitlab webhook触发jenkins任务

配置jenkins 安装gitlab插件 配置jenkins job 选择gitlab webhook触发 在高级中生成token 代码仓设置 新增webhook 配置webhook 测试连接 缺点&#xff0c;不能带gitLab事件的参数&#xff01;&#xff01;&#xff01;

Spark RDD案例:统计网站每月访问量

这个项目利用Spark技术&#xff0c;通过统计网站访问记录中的日期信息&#xff0c;实现了对每月访问量的统计和排序。通过分析数据&#xff0c;我们可以了解到不同月份的网站访问情况&#xff0c;为进一步优化网站内容和推广策略提供数据支持。 使用Spark统计网站每月访问量 …

Apache2.4和PHP8的量子纠缠

Apache不建议你用&#xff0c;PHP建议使用

一种基于电场连续性的高压MOSFET紧凑模型,用于精确表征电容特性

来源&#xff1a;A Compact Model of High-Voltage MOSFET Based on Electric Field Continuity for Accurate Characterization of Capacitance&#xff08;TED 24年&#xff09; 摘要 本文提出了一种新的高压MOSFET&#xff08;HV MOS&#xff09;紧凑模型&#xff0c;以消…

P5732 杨辉三角

题目描述 给出 &#x1d45b;(&#x1d45b;≤20)n(n≤20)&#xff0c;输出杨辉三角的前 &#x1d45b;n 行。 如果你不知道什么是杨辉三角&#xff0c;可以观察样例找找规律。 输入格式 无 输出格式 无 输入输出样例 输入 #1复制 6 输出 #1复制 1 1 1 1 2 1 1 3 3 …

408学习笔记-数据结构-2-线性表

线性表 1、逻辑结构 1、数据结构只有一种逻辑结构&#xff0c;而可以有两种存储结构&#xff0c;有多种抽象运算。 2、线性表是一种逻辑结构&#xff0c;属于总线性结构——线性结构的一种&#xff0c;同属于线性结构的逻辑结构还有&#xff1a;栈、队列和数组。 3、线性表定…

【经典文献】水下光学和声学成像:融合的时代?最新技术概述

文献名称&#xff1a;《Underwater Optical and Acoustic Imaging: A Time for Fusion? A Brief Overview of the State-of-the-Art》作者列表&#xff1a;Fausto Ferreira, Diogo Machado, Gabriele Ferri, Samantha Dugelay and John Potter作者单位&#xff1a;北约科学技术…

【hana】hana1.0多容器常用命令

基础命令 数据库 连接数据库 hdbsql -u system -p {passwd} -i 02 -d {dbname}查询所有数据库 SELECT DATABASE_NAME, ACTIVE_STATUS FROM M_DATABASES;停止数据库&#xff0c;会修改数据库状态为No ALTER SYSTEM STOP DATABASE testdb; 启动数据库&#xff0c;会修改数据…

多线程的代码案例

目录 单例模式 饿汉模式 懒汉模式 阻塞队列 生产者消费者模型意义: 阻塞队列使用方法 实现阻塞队列 阻塞队列实现生产者消费者模型 定时器 实现简单的定时器 工厂模式 线程池 为啥呢? 从池子里面取 比 创建线程 效率更高 线程池的创建 怎么填坑 ThreadPoolExec…

多年后,再探算法和数据结构

多年来&#xff0c;通过深入学习和实践各种编程语言&#xff0c;我对数据结构和算法在程序设计中的中心地位有了新的认识。本次从汇编语言到高级编程语言的探讨&#xff0c;展示了无论技术如何进步&#xff0c;构成程序的核心—算法和数据结构—始终保持其基础和不变的角色。 …

图解堆排序【一眼看穿逻辑思路】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、堆的概念2、实现堆排序前的准备工作3、堆排序的思路3.1 第一步3.2 第二步 4、结语 1、…

音视频捕捉技术:LCC382 SDI采集卡深度解析

在日新月异的多媒体时代&#xff0c;高质量的音视频采集已成为众多领域不可或缺的一环。为此&#xff0c;灵卡科技精心打造了LCC382 —— 一款集高效性、灵活性与前沿技术于一身的SDI输入与环出、HDMI输出音视频采集卡&#xff0c;旨在满足从专业直播、视频会议到医疗影像、安防…

网页版Figma汉化

最近学习Figma&#xff0c;简单介绍一下网页版Figma的汉化方法 1.打开网址&#xff1a;Figma软件汉化-Figma中文版下载-Figma中文社区 2.下载汉化插件离线包 解压汉化包 3.点开谷歌的管理扩展程序 4.点击加载已解压的扩展程序&#xff0c;选择刚刚解压的包 这样就安装好了汉化…