1. 程式人生 > >MySQL索引所使用的資料結構

MySQL索引所使用的資料結構

MySQL資料庫建立索引有兩種索引方式,一種是hash,一種是btree。

 那麼這兩種索引方式有何區別呢

一.HASH

hash一般翻譯做“雜湊”,也有叫做對映的,hash最大的應用就是hash表,是我們開發中最常用的資料結構之一,在java開發中HashMap,HashSet等常用集合使用的就是hash表,大家對hashMap應該都非常熟悉。下面來說說hash作為索引方式有哪些優勢和劣勢。

1.檢索效率非常高,原則上時間複雜度是O(1)。
2.僅能滿足"=","IN"和"<=>"查詢,不能使用範圍查詢。
3.無法被用來避免資料的排序操作
4.不能利用部分索引鍵查詢。
5.在任何時候都不能避免表掃描。
6.遇到大量Hash值相等的情況後效能並不一定就會比B-Tree索引高。

所以hash的效率雖然比較高,但並是適合所有場景,實際上mysql在建立索引時常用的儲存引擎都不支援hash,這裡我們只稍微瞭解一下。

二.BTREE

為了不誤導大家,我找了一篇大神寫的文章,大家可以看看。