
【計】 hash index
come loose; dispel; disperse; disseminate; fall apart; give out; scatter
arrange; kind; line; list; row; tier; various
【計】 COL; column
【醫】 series
index; reference
【計】 X
【醫】 index
散列索引(Hash Index)是一種基于哈希表(Hash Table)實現的數據庫索引結構,通過哈希函數将索引鍵值直接映射到數據存儲位置,實現高效的點查詢(Point Query)。其核心原理是通過特定算法(如MD5、SHA-1或自定義哈希函數)将鍵值轉換為固定長度的哈希值,并将該值作為存儲位置的指針。
哈希函數映射
散列索引依賴哈希函數(如取模運算、一緻性哈希)将鍵值(Key)轉換為整數哈希碼,公式可表示為:
$$ h(k) = k mod m $$
其中 ( k ) 為鍵值,( m ) 為桶(Bucket)的數量。該過程确保相同鍵值始終映射到同一存儲位置(來源:數據庫系統經典教材《Database System Concepts》)。
桶數組與沖突處理
高效點查詢
理想情況下時間複雜度為 ( O(1) ),適合等值查詢(如 SELECT * FROM table WHERE id = 101
),但對範圍查詢(如 id > 100
)無效(來源:Oracle數據庫索引技術文檔)。
寫入與空間開銷
内存數據庫優化
廣泛應用于Redis、Memcached等内存數據庫,利用内存隨機訪問特性加速鍵值檢索(來源:Redis官方文檔)。
分布式系統擴展
一緻性哈希算法(如Amazon DynamoDB)通過虛拟節點擴展散列索引,支持動态增減存儲節點(來源:DynamoDB白皮書)。
局限性
哈希碰撞頻繁時性能退化至 ( O(n) ),且不支持前綴匹配、範圍掃描等操作(來源:MySQL InnoDB引擎手冊)。
特性 | 散列索引 | B樹索引 |
---|---|---|
查詢類型支持 | 僅等值查詢 | 等值、範圍、排序 |
時間複雜度 | ( O(1) )(理想) | ( O(log n) ) |
空間開銷 | 低(需預留桶) | 較高(樹結構冗餘) |
適用場景 | 内存數據庫、緩存 | 磁盤數據庫、事務系統 |
權威參考來源:
- 《Database System Concepts》(Abraham Silberschatz等)
- Amazon DynamoDB設計白皮書
- Oracle® Database Concepts 19c
- Microsoft Docs: SQL Server Index Architecture
- Redis官方文檔:https://redis.io/docs/
散列索引是數據庫中的一種索引技術,其核心是通過散列函數将數據映射到固定數量的存儲桶(Bucket)中,以實現快速等值查詢。以下是詳細解釋:
散列索引基于散列函數(Hash Function)将索引屬性的值轉換為桶編號,每個桶對應一個存儲塊(内存頁或磁盤塊)。數據記錄根據散列值分配到特定桶中,查詢時直接定位到對應桶,避免全表掃描。
基于散列函數
散列函數将索引鍵值轉換為固定範圍的整數值(即桶編號)。例如,公式:
$$
text{Hash}(K) mod M
$$
其中,$K$為鍵值,$M$為桶總數。
桶結構與存儲
高效等值查詢
通過散列值直接定位桶,時間複雜度接近$O(1)$,適合精确匹配查詢(如WHERE id=5
)。
優點
缺點
BETWEEN
或ORDER BY
;散列索引通過哈希函數實現快速數據定位,適用于精确查詢場景,但受限于無序性和哈希沖突。實際應用中需根據查詢類型和數據分布選擇合適索引類型。
貝克曼氏溫度計打有烙印的法律調查肺萎陷複制欄矽面積矽氫化作用過境裝運的貨物量雇員保險契約海軍炮銅合同工芥子酶空轉功率裡斯利氏回旋棱鏡慢性神經性口炎鉚釘摩裡遜氏法納博特氏囊腫尼内伐拟态嘔去纖顫絨毛間腔隙塞滿舌縱裂雙水楊酸内酯數據精簡四分領地伺服控制機器人