mysql为什么采用b树_为什么MongoDB采用B树索引,而Mysql用B+树做索引
展開全部
事實上,在MySQL數據庫中,諸多存儲引擎使用的是B+樹,即便其名字看上去是BTREE。
4.1 innodb的索引機制
先以innodb存儲引擎為例,說明62616964757a686964616fe4b893e5b19e31333433643738innodb引擎是如何利用B+樹建立索引的
首先創建一張表:zodiac,并插入一些數據
對于innodb來說,只有一個數據文件,這個數據文件本身就是用B+樹形式組織,B+樹每個節點的關鍵字就是表的主鍵,因此innode的數據文件本身就是主索引文件,如下圖所示,主索引中的葉子頁(leaf page)包含了數據記錄,但非葉子節點只包含了主鍵,術語“聚簇”表示數據行和相鄰的鍵值緊湊地存儲在一起,因此這種索引被稱為聚簇索引,或聚集索引。
這種索引方式,可以提高數據訪問的速度,因為索引和數據是保存在同一棵B樹之中,從聚簇索引中獲取數據通常比在非聚簇索引中要來得快。
所以可以說,innodb的數據文件是依靠主鍵組織起來的,這也就是為什么innodb引擎下創建的表,必須指定主鍵的原因,如果沒有顯式指定主鍵,innodb引擎仍然會對該表隱式地定義一個主鍵作為聚簇索引。
同樣innodb的輔助索引,如下圖所示,假設這些字符是按照生肖的順序排列的(其實我也不知道具體怎么實現,不要在意這些細節,就是舉個例子),其葉子節點中也包含了記錄的主鍵,因此innodb引擎在查詢輔助索引的時候會查詢兩次,首先通過輔助索引得到主鍵值,然后再查詢主索引,略微有點啰嗦
總結
以上是生活随笔為你收集整理的mysql为什么采用b树_为什么MongoDB采用B树索引,而Mysql用B+树做索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装mysql出现错误_安装Mysql时
- 下一篇: mysql+显示表ddl_MySQL_D