索引的種類與B 樹索引 簡單歸納總結

2021-08-26 10:06:40 字數 863 閱讀 1532

索引的種類:

1,b*樹索引

2,位圖索引

3,位圖聯結索引

4,基於函式的索引

5,應用域索引

b*樹索引

最底層的是葉子節點(leaf node),包含索引鍵以及乙個rowid。

中間是分支塊(branch block),用於導航。

最頂是根塊。

索引的葉子節點間構成了雙向鍊錶,可供索引區間掃瞄。例子:where x between 20 and 30;就可以在找到20後,水平地掃瞄葉子節點鍊錶,而不

用再再索引結構中導航。

b*樹是平衡樹,有高度(height),從根塊到葉子快的遍歷,都會訪問同樣數目的塊。大多數高度是2或3,所以基本都是2或3次i/o就能找到rowid。

select index_name,blevel,num_rows

from user_indexes

where table_name = 'big_table'

blevel是分支層數,加1就是b樹高度了。

什麼情況下應該使用b*樹索引

1.僅當要通過索引訪問表中很少的一部分行(只佔乙個很小的百分比)。

對於瘦表(少列,列小),百分比為2%-3%;

對於肥表,百分比為20-25%;

i/o的資料塊就少,全表掃瞄可能效果更好。結論:越瘦的表,百分比越小,越傾向可以使用全表掃瞄。

2.回答乙個查詢:索引包含了足夠的資訊來回答整個查詢,而根本不必訪問表,這種情況下,索引可以作為乙個較瘦版本的表。

資料在磁碟上的物理組織形式,也會對索引的使用效能有影響。

從乙個1000行的索引返回資料所用的時間與從乙個100000行的索引結構中返回資料的時間是一樣的,因為高度一樣,i/o次數就一樣。

B樹與B 樹索引

b 樹 資料庫結構使用樹的結構索引,從演算法邏輯上看,二叉查詢樹的查詢速度和比較次數都是最小的。資料庫的索引儲存在磁碟上,當資料量比較大的時候,索引的大小可能有幾個g 甚至更多。當我們利用索引查詢的時候,不可能把整個索引載入到記憶體,能做的只有逐一載入每乙個磁碟頁,磁碟頁對應索引樹的節點。當利用二叉...

MySQL 索引與 B 樹

mysql innodb 儲存引擎是使用 b 樹來組織索引的。在介紹 b 樹以前,先認識一下什麼是 b 樹,b 樹是平衡二叉樹,與一般的二叉查詢樹不同,平衡二叉樹首先滿足二叉查詢樹的定義 左子樹的鍵小於根的鍵,右子樹的鍵大於根的鍵 其次必須滿足任何節點的兩個子樹的高度最大差為 1。b 樹的維護要求插...

MySQL索引之B 樹與B 樹

本文只是個人閱讀筆記,原文建議詳細閱讀 什麼是b 樹 什麼是b 樹 我們知道mysql中索引最常用的資料結構就是hash和b tree,而其中的b 樹更是大多數 mysql 儲存引擎的預設索引型別。1 雜湊表 二叉查詢樹 b樹的比較要弄清楚b 樹,就得先知道b 樹 b 樹就是b樹 首先mysql索引...