首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

資料庫為何選擇哈希表而非直接定址?折衷與隨機存取的本質

     編輯:程式設計綜合問答

哈希表非不能直接定址,而是在 動態增刪改、空間利用率、鍵值類型多樣 三者間取得最佳折衷。

直接定址的局限

  • 鍵必須為非負整數且範圍小(如 0~1M),否則陣列過大浪費記憶體。
  • 無法處理字串、複合鍵等非整數鍵值。
  • 動態擴容困難,需重新分配整個陣列。

哈希表優勢

  1. 鍵值泛化:透過雜湊函數將任意類型鍵映射為整數索引。
  2. 動態擴縮:負載因子超標時 Rehash,平均 O(1) 擴容。
  3. 空間效率:只為實際存入的鍵值分配槽位。

資料庫儲存層真相

  • 底層檔案均為 二進位隨機存取檔案(非文字檔),支援 seek 定位。
  • 索引結構(B+樹、哈希、LSM樹)建立在隨機存取檔案之上。
  • 哈希索引適用等值查詢(Point Lookup),範圍查詢仍需 B+樹。

結論:資料庫同時使用二進位檔案(儲存)與哈希/樹狀索引(加速查詢),兩者互補而非互斥。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved