什么是索引?為什么要使用B樹作為索引數據結構?

MySQL的事務特性

1.原子性:原子性就是這個事件要么執行完,要么沒執行,不會存在中間狀態,與C++中華那個加鎖避免多線程競爭是一個道理;

2.一致性:保持事件的操作對象雙方某數據之和是不變的,就以轉賬為例,A轉給B100塊,那么A的余額多100,B的余額就必須少100;

3.隔離性:隔離就是獨立的,A事件正在進行時,B事件是看不到A時間的變化過程的,只能看到A事件的起始和結束狀態;

4.持久性:事務提交上的數據會被永遠的保存到數據庫中,即便系統突然崩潰數據也不會發生變化;

MySQL索引

MySQL索引種類

普通索引:沒有什么限制,可以字段中可以出現多個重復的數據,也可以為空

唯一索引:字段中的數據不可以重復,但是可以為空,前提是該字段可以為空

主鍵索引:通常在建表的時候就會加上的索引,就以主鍵類比即可,唯一+不為空

組合索引:某兩個字段通常會被配合一塊查詢,所以就同時組合加上索引

全文索引:知道即可

索引原理

B樹數據結構;

先不說什么是B樹,我們就談談元組在表中的存儲是什么數據結構--->指針數組

每一個指針指向一個元組;所以我們查找某一項數據的時候不就需要遍歷數組嗎;那遍歷數組的復雜度不就是On嗎,

對吧,先不說什么是索引,就單看現在你面前有個數組,你要查詢,你怎么優化;

-->樹型結構,對吧!

我們都知道搜索二叉樹的就是用來查找的樹型結構,一般時間復雜度是Ologn,對吧這就實現了優化,

那么回到上面的問題,我們該如何優化查找元組,就是一個優化數組搜索的問題罷了;

在MySQL中不是用的二叉搜索樹,而是用的B樹,先簡單說一下B樹也是一個樹,只不過是跟二叉搜索樹不一樣罷了,不要以為是什么高大尚的數據結構;我們先簡單把他理解成是多叉樹!!

那么我們先想想為什么不用二叉搜索樹呢?-->效率問題!!!


>我們先來劃分一下立場,二叉搜索樹搜索的數據是不是在內存中,內存中搜索是不是很快;

我們再來看看數據庫查找數據是在哪里,回答我!!!!是不是在硬盤上進行IO啊,他是與硬件交互的,怎么跟內存中茶軸相比,a?對不對?

那二叉搜索樹,可不可以在進行優化一下,畢竟二叉搜索樹他在搜索他也就兩個叉,我如果用多個叉來構建數據結構,是不是會更加的便捷;從樹的形態上看,樹的高度是不是就會變低,寬度變大,這意味這什么?這意味著我搜索數據可以少走彎路了,對不?

所以知道為什么不用二叉搜索樹了吧,但是多叉樹是一個十分寬泛的詞, 對不,為什么要專門為二叉搜索樹起名叫二叉搜索樹的呢,對吧,那么我們多叉搜索樹也要有個范!!!

-->就叫做b樹,懂了吧!!!!

集體b樹的實現可分為多維的,可以是3維,4維,意思就是一個節點分治是3個4個罷了;

所以,懂了吧!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73363.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pyqt5報錯:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解決)

我在使用pyqt庫的時候報錯: qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…

AI大模型全攻略:原理 · 部署 · Prompt · 場景應用

?? AI大模型全攻略:原理 部署 Prompt 場景應用 本文從基礎原理到實踐部署,再到 Prompt 工程與典型應用案例,全方位解析 AI 大模型的學習路徑與使用方法,適合開發者、產品經理、技術愛好者等不同背景讀者。 ?? 一、什么是 AI 大模型? AI 大模型(Large Language Mo…

2024年MathorCup數學建模D題量子計算在礦山設備配置及運營中的建模應用解題文檔與程序

2024年第十四屆MathorCup高校數學建模挑戰賽 D題 量子計算在礦山設備配置及運營中的建模應用 原題再現: 隨著智能技術的發展,智慧礦山的概念越來越受到重視。越來越多的設備供應商正在向智慧礦山整體解決方案供應商轉型,是否具備提供整體解…

Flink 流處理框架的核心特性

文章目錄 事件時間支持Flink狀態編程一、狀態的類型1. 托管狀態(Managed State)2. 原始狀態(Raw State) 二、狀態的管理和容錯 Flink端到端的一致性1、檢查點機制2、冪等3、事務 水位線窗口操作1、窗口類型2、窗口操作的時間語義 …

交換機(access端口)

任務&#xff1a;對access有更深入的理解 通過網盤分享的文件&#xff1a;交換機&#xff08;access&#xff09;.zip 鏈接: https://pan.baidu.com/s/1cMC6Na_1PLo6zOHazFplQQ?pwd23a5 提取碼: 23a5 SW1 <Huawei>sys [Huawei]dis vlan The total number of vlans …

《鳥哥的Linux私房菜基礎篇》---5 vim 程序編輯器

目錄 一、vim程序編輯器的簡介 二、命令模式快捷鍵&#xff08;默認模式&#xff09; 1、光標移動 2、編輯操作 3、搜索與替換 三、插入模式快捷鍵 四、底行模式快捷鍵&#xff08;按&#xff1a;進入&#xff09; 五、高級技巧 1、分屏操作 2、多文件編輯 3、可視化…

AI大白話(四):自然語言處理——AI是如何理解和生成人類語言的?

??引言: 專欄:《AI大白話》 AI大白話(一):5分鐘了解AI到底是什么? AI大白話(二):機器學習——AI是怎么“學習“的? AI大白話(三):深度學習——AI的‘大腦‘是如何構建的? 大家好!歡迎回到"AI大白話"系列。前面我們聊了AI的基本概念、機器學習的原理…

擴展卡爾曼濾波

1.非線性系統的線性化 標準卡爾曼濾波 適用于線性化系統&#xff0c;擴展卡爾曼濾波 則擴展到了非線性系統&#xff0c;核心原理就是將非線性系統線性化&#xff0c;主要用的的知識點是 泰勒展開&#xff08;我另外一篇文章的鏈接&#xff09;&#xff0c;如下是泰勒展開的公式…

安裝unsloth

我在llamafactory微調LLM&#xff0c;簡單測了一些&#xff08;很不精準&#xff09;&#xff0c;加速方法中unsloth比flash_attention速度快了40%&#xff0c;顯存占用減少15%&#xff1b; 創建虛擬環境&#xff1a;conda create -n env_name python3.10, 然后conda activate…

關于 51 單片機顯示多個數碼管時出現殘影

殘影現象&#xff1a; 出現殘影代碼&#xff1a; #include <REGX52.H> #include <INTRINS.H> void Delayxms(unsigned int x) //11.0592MHz {while(x){unsigned char i, j;_nop_();i 2;j 199; do{while (--j);} while (--i);x--;} } void DisplayDigitalNumb…

STM32學習筆記之常用外設接口(原理篇)

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

InnoDB 引擎核心知識點

InnoDB 引擎核心知識點 6.1 邏輯存儲結構 表空間&#xff08;Tablespace&#xff09;&#xff1a;所有數據邏輯上存儲在一個表空間中&#xff0c;物理上可能由多個文件組成。段&#xff08;Segment&#xff09;&#xff1a;分為數據段&#xff08;B樹葉子節點&#xff09;、索引…

深度學習 Deep Learning 第9章 卷積網絡 CNN

深度學習 Deep Learning 第9章 卷積網絡 章節概述 本章深入探討了卷積網絡的原理、變體及其在深度學習中的應用。卷積網絡通過卷積操作實現了參數共享和稀疏連接&#xff0c;顯著提高了模型的效率和性能。本章首先介紹了卷積操作的基本形式及其在不同數據維度上的應用&#x…

基于MATLAB的渦旋光和高斯光疊加產生平頂光

強度疊加耦合成平頂光&#xff0c;不發生干涉 通過分別生成高斯光和渦旋光的強度分布&#xff0c;然后按合適的權重將它們疊加&#xff0c;得到近似平頂光&#xff08;flat‐top beam&#xff09;的效果。由于我們只是將強度相加&#xff08;而非復振幅疊加&#xff09;&#…

wordpress-網站百寶箱插件

含置頂,網頁寵物, 哀悼, 禁止復制, 禁止查看源碼, 彈幕, WP優化,媒體分類,預加載,定時發布,在線客服, 留言板, 手機客服, 網站背景, 公告, 跑馬燈, 水印, 分享, 打賞, 海報圖, 廣告,數據庫管理,圖片加載特效。等綜合功能插件

北斗導航 | 基于北斗三號短報文通信的北斗-YOLO融合系統原理,算法公式,系統流程框圖,matlab代碼,應用場景

以下是關于基于北斗三號短報文通信的北斗-YOLO融合系統的詳細解析,包含原理、算法公式、系統流程、Matlab代碼框架和應用場景。一、系統原理 北斗-YOLO融合系統結合了北斗三號短報文通信(雙向通信能力)和YOLO目標檢測算法,用于在無地面網絡覆蓋區域實現實時目標檢測與數據傳…

Vue 中的日期格式化實踐:從原生 Date 到可視化展示!!!

&#x1f4c5; Vue 中的日期格式化實踐&#xff1a;從原生 Date 到可視化展示 &#x1f680; 在數據可視化場景中&#xff0c;日期時間的格式化顯示是一個高頻需求。本文將以一個邀請碼關系樹組件為例&#xff0c;深入解析 Vue 中日期格式化的 核心方法、性能優化 和 最佳實踐…

試試智能體工作流,自動化搞定運維故障排查

APO 1.5.0版本全新推出的智能體工作流功能&#xff0c;讓運維經驗不再零散&#xff01;只需將日常的運維操作和故障排查經驗轉化為標準化流程&#xff0c;就能一鍵復用&#xff0c;效率翻倍&#xff0c;從此告別重復勞動&#xff0c;把時間留給更有價值的創新工作。更貼心的是&…

LeetCode-215. 數組中的第K個最大元素

1、題目描述 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入: [3,2,1…

分布式光伏防逆流管理:技術要點與實踐解析

在國家“雙碳”目標推動下&#xff0c;分布式光伏作為新能源體系的重要組成部分&#xff0c;正迎來快速發展。國家能源局近期發布的《關于做好新能源消納工作保障新能源高質量發展的通知》明確提出&#xff0c;需加強網源協調與調節能力&#xff0c;優化新能源利用率。其中&…