資料庫索引

2022-08-05 14:09:09 字數 1441 閱讀 1058

二叉樹:乙個節點最多有兩個子節點

平衡樹:所有節點的深度差不大於1

查詢樹:節點的值是排序過的,左節點小於右節點

b+樹:按上面三種樹的分類,b+樹是多叉平衡查詢樹。

當我們要查詢值v時,就用v與節點中的keys一一對比(節點中的keys是有序的),確定出相應的childnode,然後再去childnode中對比。

//b+樹節點的資料結構

public class node

innodb引擎支援b+樹索引。

資料庫從大到小的結構可以分為段(segment)、區(extent)、頁(page)、表(table)、行(row),每個頁預設是16kb大小。b+樹資料結構中的節點就是這裡的頁,即innodb通過b+樹索引只能定位到頁,在頁中的繼續查詢就不是靠索引了。

在頁面中的查詢需要先用二叉法查詢目錄槽,然後根據目錄槽給出的大致位置再去順序查詢精確的行。

如果多個行記錄的主鍵為(1,2,3,4,5,6,7,8),那麼目錄槽可能就由其中的部分組成,如(1,5,8)。

資料庫中的b+樹往往層數比較少,一般在2~4層。資料庫查詢資料時,會一次性從磁碟中讀取多個連續的頁(即多個連續的b+樹節點)進記憶體。在記憶體中查詢目標索引和目標子節點。當從父節點跨層到子節點時,往往要重新進行乙個磁碟讀取,而磁碟io往往是最耗時間的。為了減少磁碟io,樹的層數應該盡量少,但也不能太少,如果少到極致只有1層的話,那就退化為節點內的順序或者二叉查詢了。

以主鍵為索引建立b+樹,且葉子節點中有記錄的全部列資料。

聚集索引建立的b+樹只有乙個。

以指定鍵值建立b+樹,且葉子節點中沒有全部列資料,葉子節點中有指定鍵值和該條記錄的主鍵。

輔助索引建立的b+樹可以有多個。

可以將多列合併作為乙個索引,這幾個列是有順序的。如果將(col1,col2)作為聯合索引,會先排列col1,再排列col2.

覆蓋索引是指查詢過程在輔助索引樹上就可以結束,不需要到聚集索引樹上查詢。要達到這樣的效果,就需要將多個需要的列作為乙個聯合索引建立起來。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...