日常 MySQL的雜湊索引和原理研究測試

2022-01-30 20:27:21 字數 1427 閱讀 5592

1.雜湊索引 :(hash index)基於雜湊表實現,只有精確匹配到索引列的查詢,才會起到效果。

對於每一行資料,儲存引擎都會對所有的索引列計算出乙個雜湊碼(hash code),雜湊碼是乙個

較小的整數值,並且不同鍵值的行計算出來的雜湊碼也不一樣。

2.只有memory儲存引擎顯式支援雜湊索引,但是原理可以用在偽雜湊索引上

表結構如下:

3.假設會有這樣乙個雜湊函式f(),該返回下面的雜湊碼整數值

f('tao')=2323

f('zhang')=7437

f('li')=8784

4.一張雜湊表,儲存著對應關係,槽編號是循序的,值資料行不是

槽(slot) 值(value)

2323 指向第2行資料

7437 指向第1行資料

8784 指向第3行資料

5.select lname from test_hash where fname='tao'\g;

mysql先計算'tao'的雜湊值,f('tao')=2323,然後根據該值在雜湊索引表中查詢對應的行,找到它指向的是

第2行資料,直接查詢第2行資料,判斷fname是tao,確保正確

6.雜湊衝突:不同的值得到了相同的雜湊碼,例如f('tao')=2323 f('wang')=2323,此時就是出現了雜湊衝突

當出現雜湊衝突時,相同的資料會儲存在鍊錶中,遍歷鍊錶找到符合的。

7.特點:

1)雜湊索引只包含雜湊碼和指標,不儲存資料字段值

2)雜湊索引資料並不是按循序儲存的,因此無法用於排序

3)因為要通過查詢值計算確定的雜湊碼,所以雜湊索引不支援部分匹配,不支援範圍查詢,只支援等值比較查詢

4)當雜湊衝突很多的時候,效率會降低

在innodb儲存引擎上,可以基於上面的原理,實現偽雜湊索引,配合預設的b-tree索引

日常 MySQL的雜湊索引和原理研究測試

1.雜湊索引 hash index 基於雜湊表實現,只有精確匹配到索引列的查詢,才會起到效果。對於每一行資料,儲存引擎都會對所有的索引列計算出乙個雜湊碼 hash code 雜湊碼是乙個 較小的整數值,並且不同鍵值的行計算出來的雜湊碼也不一樣。2.只有memory儲存引擎顯式支援雜湊索引,但是原理可...

mysql 雜湊索引 MySQL索引之雜湊索引

雜湊索引 hash index 建立在雜湊表的基礎上,它只對使用了索引中的每一列的精確查詢有用。對於每一行,儲存引擎計算出了被索引的雜湊碼 hash code 它是乙個較小的值,並且有可能和其他行的雜湊碼不同。它把雜湊碼儲存在索引中,並且儲存了乙個指向雜湊表中的每一行的指標。在mysql中,只有me...

mysql雜湊索引用途 MySQL 雜湊索引

雜湊索引基於雜湊表實現,只有精確匹配索引所有列的查詢才有效。在mysql中只有memory引擎顯示支援雜湊索引,也是memory引擎表的預設索引型別。memory引擎是支援非唯一雜湊索引的。如果多個列的雜湊值相同,索引會以鍊錶 的方式存放多個記錄指標道同乙個雜湊條目中。舉個粒子 create tab...