mysql在innodb索引下b 樹的高度問題。

2022-05-02 22:36:18 字數 687 閱讀 4752

b+樹索引介紹

b+樹索引的本質是b+樹在資料庫中的實現。但是b+樹索引有乙個特點是高扇出性,因此在資料庫中,b+樹的高度一般在2到3層。也就是說查詢某一鍵值的記錄,最多隻需要2到3次io開銷。按磁碟每秒100次io來計算,查詢時間只需0.0.2到0.03秒。

資料庫中b+樹索引分為聚集索引(clustered index)和非聚集索引(secondary index).這兩種索引的共同點是內部都是b+樹,高度都是平衡的,葉節點存放著所有資料。不同點是葉節點是否存放著一整行資料。

(1) 聚集索引(innodb)

innodb儲存引擎表是索引組織表,即表中資料按主鍵順序存放。而聚集索引就是按每張表的主鍵構造一顆b+樹。並且葉節點存放整張表的行記錄資料。每張表只能有乙個聚集索引(乙個主鍵)。

聚集索引的另乙個好處是它對於主鍵的排序查詢和範圍的速度非常快。葉節點的資料就是我們要找的資料。

(2)高度計算

innodb儲存引擎預設乙個資料頁大小為16kb,非葉子節點存放(key,pointer),pointer為6個位元組,key為4個位元組,即非葉子節點能存放16kb/14左右的key,pointer,而葉子節點如果一條資料大小為100位元組,那乙個葉子節點大約可存放160條資料。

如果高度為3,則可存放資料為:16kb/14 * 16kb/14 * 160大約1億多資料。

因此innodb儲存引擎b+樹的高度基本為2-3.

innodb的索引下推

索引下推,是mysql優化聯合索引查詢的一種方案,叫做索引下推不如翻譯為索引條件下推更合適 index condition pushdown 簡稱icp,因為他實際上是把where中的查詢索引條件,下推給了儲存引擎 回表索引下推 索引覆蓋 預備知識 b tree 主鍵索引和非主鍵索引 聚簇索引和非聚...

mysql索引下推 MySQL中的索引下推

前段時間看了一下資料庫相關知識,出現了索引下推這個名詞,有必要記錄下來作為知識儲備。索引下推用一句話總結是 索引下推是資料庫檢索資料過程中為減少回表次數而做的優化。首先介紹下什麼是資料庫回表,回表是一種資料庫檢索過程。通常發生在使用二級索引檢索非主索引資料的過程中。舉個例子 usertest資料表 ...

MySQL學習筆記(四)索引(下)

在上述那個表中,如果執行了select from t where k between 3 and 5,需要執行幾次樹的搜尋操作,會掃瞄多少行?表的初始化語句 現在看看select from t where k between 3 and 5這條sql查詢語句的執行流程 1 在k索引樹上找到k 3記錄...