哈希表非不能直接定址,而是在 動態增刪改、空間利用率、鍵值類型多樣 三者間取得最佳折衷。
直接定址的局限
- 鍵必須為非負整數且範圍小(如 0~1M),否則陣列過大浪費記憶體。
- 無法處理字串、複合鍵等非整數鍵值。
- 動態擴容困難,需重新分配整個陣列。
哈希表優勢
- 鍵值泛化:透過雜湊函數將任意類型鍵映射為整數索引。
- 動態擴縮:負載因子超標時 Rehash,平均 O(1) 擴容。
- 空間效率:只為實際存入的鍵值分配槽位。
資料庫儲存層真相
- 底層檔案均為 二進位隨機存取檔案(非文字檔),支援
seek 定位。
- 索引結構(B+樹、哈希、LSM樹)建立在隨機存取檔案之上。
- 哈希索引適用等值查詢(Point Lookup),範圍查詢仍需 B+樹。
結論:資料庫同時使用二進位檔案(儲存)與哈希/樹狀索引(加速查詢),兩者互補而非互斥。