mysql中雜湊索引知識點

2021-10-05 04:10:33 字數 761 閱讀 8293

以下內容來自《高效能mysql》

1.雜湊索引本身只需儲存對應的雜湊值,所以索引的結構十分緊湊,這也讓雜湊索引查詢的速度非常快

2.雜湊索引只包含雜湊值和行指標,而不會儲存字段值,所以不能夠通過使用索引中的值來避免讀取行,不過訪問記憶體中的行速度   很快,這一點對效能的影響不大。

3.雜湊索引資料並不是按照索引值順序儲存的,所以也就無法用於排序

4.雜湊索引頁不支援部分索引列匹配查詢,因為雜湊索引始終是使用索引列的全部內容來來計算雜湊值的,例如在資料列(a,b)上建立雜湊索引,如果查詢只有資料列a,則無法使用該索引

5.雜湊索引只支援等值比較查詢,包括 = ,in(),不支援任何範圍查詢,例如price > 100

6.訪問雜湊索引的資料非常快,除非有很多雜湊衝突,當出現雜湊衝突的時候,儲存引擎必須遍歷連表中所有行的指標,逐行進行比較,直到找到所有符合條件的行

7.如果雜湊衝突很多的話,一些索引維護操作的代價也比較高。例如,如果再某個選擇性很低(雜湊衝突很多)的列上建立雜湊索引,那麼當從表中刪除一行的時候,儲存引擎需要遍歷對應雜湊值的連表中的每一行,找到並刪除對應行的引用,衝突越多,代價越大。

正是由於這些限制,雜湊索引只適用於某些特定的場合,而一旦適合雜湊索引,則它帶來的效能提公升將非常顯著。

innodb 引擎有乙個特殊的功能叫做「自適應雜湊索引」,當innodb注意到某些索引值被修改的非常頻繁的時候,它會再記憶體中基於b-tree索引之上再建立乙個雜湊索引,這樣就讓b-tree索引也具有雜湊索引的一些優點,比如快速的雜湊查詢,這是乙個完全自動的,內部的行為。

Mysql 索引知識點

概述 之前寫過一篇mysql b 樹學習,簡單的介紹了b 數以及mysql使用b 樹的原因,有了這些基礎知識點,對mysql索引的型別以及索引使用的一些技巧,就比較容易理解了。覆蓋索引 建立了乙個輔助索引,如果能直接從這個輔助索引檔案中獲取到資料,而無需去訪問聚集索引 自增主鍵索引 檔案的話,那麼這...

mysql索引優化知識點

想要了解索引的優化方式,必須要對索引的底層原理有所了解 索引的用處 索引的分類 面試技術名詞 索引採用的資料結構 索引匹配方式 create table staffs id int primary key auto increment,name varchar 24 not null default...

索引知識點

索引 概念 對資料表中一列或多列的值進行排序後的一種結構,其作用就是提高表中資料的查詢速度。1.普通索引 由key或index定義的索引,是基本索引型別,可以建立任何資料型別中,其值是否唯一和非空由字段本身的約束條件所決定。2.唯一性索引 由unique定義的索引,該索引所在欄位的值必須是唯一的。3...