1:b樹
見圖知義:b樹本質為平衡二杈樹,但在索引中節點的檢索會進行i/o操作,為了減少節點讀取節點的次數(樹的高度),
將平衡二叉樹優化為平衡多杈樹。舉例如下,查詢28,根節點常駐記憶體無需i/o,定位到p2指標,
p2指標磁碟讀取磁碟塊3,i/o次數為1,再次定位讀取磁碟塊8並匹配到28,查詢結束,至此共只需2次i/o開銷。
i/o開銷為h-1,即o(h
)=o(
logd
n)'>
o(h)=o(logdn),出度d一般大於100,故而對於大資料來說樹的深度也不會過深。o(
h)=o
(log
dn)'>此外,在讀取某個節點時,根據區域性性原理,會發生頁預讀,再次優化i/o次數(一般頁為 4k,一般將節點設定為一頁,計算機儲存按頁對齊,?hook)o(
n)'>2°:innodb主要為聚合索引,索引檔案包含所有資料項
3°:主索引與輔索引
3:建立索引時:建立字首索引注意字段選擇性;能擴充套件索引盡量不新建(索引維護與增刪開銷);避免隱式轉換
參考博文:
h)=o
(log
dn)'>
MYSQL索引原理B 樹
書中 mysql技術內部innodb儲存引擎 有所有你的疑惑解答 mysql 索引總結 mysql索引是b 樹,一般高度在2 4層,機械磁碟每秒可以做100此i o,索引2 4次需要花費0.04s的時間,非常好 mysql使用的是聚簇索引,一般是主鍵索引是聚簇索引,而輔助索引是非聚簇索引 聚簇索引 ...
MySQL索引原理(b 樹)
索引目的 索引的目的在於提高查詢效率,可以模擬字典,如果要查 mysql 這個單詞,我們肯定需要定位到m字母,然後從下往下找到y字母,再找到剩下的sql。如果沒有索引,那麼你可能需要把所有單詞看一遍才能找到你想要的,如果我想找到m開頭的單詞呢?或者ze開頭的單詞呢?是不是覺得如果沒有索引,這個事情根...
MySQL 索引B 樹原理,以及建索引的幾大原則
一 mysql中的索引 在 mysql 中,主要有四種型別的索引,分別為 b tree 索引,hash 索引,fulltext 索引和 r tree 索引。b tree 索引是 mysql 資料庫中使用最為頻繁的索引型別,除了 archive 儲存引擎之外的其他所有的儲存引擎都支援 b tree 索...