MySQL InnoDB 索引

來源:互聯網
上載者:User

B+樹索引

B+樹索引在DB中有一個特點就是高扇出性,一般在DB中B+樹的高度在2-3層左右,也就意味著只需要2-3次的IO操作即可。而現在的磁碟每秒差不多在100次IO左右,2-3次意味著查詢時間只需0.02-0.03秒。

叢集索引

InnoDB儲存引擎表是索引組織表,即表中資料安裝主鍵順序存放。而叢集索引就是按照每張表的主鍵構造一顆B+,並且分葉節點存放著整張表的行記錄資料,因此也讓叢集索引也是索引的一部分。

實際的資料頁只能按照一顆B+樹進行排序,因此每張表只能擁有一個叢集索引。在很多情況下,查詢最佳化工具非常傾向於採用叢集索引,因為叢集索引能夠讓我們在索引的分葉節點上直接找到資料。

輔助索引

對於輔助索引(也稱非叢集索引),分葉節點不包含行的全部資料。分葉節點除了包含索引值以外,每個分葉節點中的索引行中還包含了一個書籤,該書籤用來告訴InnoDB儲存引擎,哪裡可以找到與索引相對應的行資料。因為InnoDB儲存引擎是索引組織表,因此InnoDB儲存引擎的輔助索引的書籤就是相應行資料的叢集索引鍵。

什麼時候使用B+樹索引

一般的經驗是對於訪問表中很少一部分行時,使用B+樹索引才有意義。而對於像性別,地區,類型等欄位,它們可取值的範圍很小(低選擇性),一般不推薦使用B+樹索引;反之,如果某個欄位的取值範圍很廣,幾乎沒有重複(高選擇性),則此時使用B+樹索引是最合適的,例如email欄位,在一些應用中通常都不允許重複出現。

因此,當訪問高選擇性欄位並從表中取出很少一部分行時,對這個欄位添加B+樹索引是非常有必要的。但是如果出現了訪問欄位是高選擇性,但是取出的行資料占表中大部分的資料時,這時MySQL資料庫就不會使用B+樹索引了。

文章參考:

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.