日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 怎么创建B Tree索引_MySQL为什么选择B+Tree做索引

發布時間:2023/12/19 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 怎么创建B Tree索引_MySQL为什么选择B+Tree做索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL為什么選擇B+Tree?

首先理解MySQL索引的幾個原則

是為了加速對表中數據行的檢索而創建的一種分散存儲的數據結構。

工作機制

如上圖:以id創建索引,索引數據結構里存儲了索引鍵(關鍵字)以及對應的值(地址值),當搜尋id=101的數據時,直接找到對應的地址0x123456。時間復雜度為O(1)。

時間復雜度

二叉查找樹

二叉樹測試地址:

https://www.cs.usfca.edu/~galles/visualization/BST.html

二叉樹缺點:

二叉樹缺點

平衡二叉查找樹

每一個節點與子節點的高度差不能大于1。

平衡二叉樹測試地址:

https://www.cs.usfca.edu/~galles/visualization/AVLtree.html

二叉樹缺陷:

搜索時IO次數過多,節點數據內容太多。

多路平衡二叉樹

多路平衡二叉樹測試地址:

https://www.cs.usfca.edu/~galles/visualization/BTree.html

經常變化的字段不要建索引,對B樹的維護不好。B樹的合并和分裂對性能有損耗。

B+Tree

左閉合區間,id從小到大的遞增。數據變動可能是最右邊的變動 。

MySQL使用B+Tree的原因:

B+Tree掃庫、掃表能力更強。

B+Tree的磁盤讀寫能力更強。

B+Tree的排序能力更強。

B+Tree的傳效率更穩定。

兩種類型的表:

兩種類型的表

兩種表的存儲文件類型:

存儲的文件

索引用Hash算法的缺點:

無法范圍查詢

無法排序

InnoDB采取的?式是:將數據劃分為若?個?,以?作為磁盤和內存之間交互的基本單位,InnoDB 中?的???般為 16 KB。也就是在?般情況下,?次最少從磁盤中讀取16KB的內容到內存中,?次最少把內存中的16KB內容刷新到磁盤中

我們的實際?戶記錄其實都存放在B+樹的最底層的節點上,這些節點也被稱為葉?節點或葉節點,其余?來存放?錄項的節點稱為?葉?節點或者內節點,其中B+樹最上邊的那個節點也稱為根節點。

假設所有存放?戶記錄的葉?節點代表的數據?可以存放100條?戶記錄,所有存放?錄項記錄的內節點,代表的數據?可以存放1000條?錄項記錄,那么:

如果B+樹只有1層,也就是只有1個?于存放?戶記錄的節點, 最多能存放100條記錄。

如果B+樹有2層,最多能存放1000×100=100000條記錄。

如果B+樹有3層,最多能存放1000×1000×100=100000000條記錄。

歡迎關注個人公眾號:【Lvshen_9】? 交流技術

總結

以上是生活随笔為你收集整理的mysql 怎么创建B Tree索引_MySQL为什么选择B+Tree做索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。