關于數據結構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.pswp.cn/web/12862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12862.shtml
英文地址,請注明出處:http://en.pswp.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;選擇剛剛解壓的包 這樣就安裝好了漢化…