程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL Hash索引和B-Tree索引的差別

MySQL Hash索引和B-Tree索引的差別

日期:2017/7/28 14:59:40      編輯:MySQL綜合教程

MySQL Hash索引和B-Tree索引的差別。本站提示廣大學習愛好者:(MySQL Hash索引和B-Tree索引的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL Hash索引和B-Tree索引的差別正文



MySQL Hash索引構造的特別性,其檢索效力異常高,索引的檢索可以一次定位,不像B-Tree 索引須要從根節點到枝節點,最初能力拜訪到頁節點如許屢次的IO拜訪,所以 Hash 索引的查詢效力要遠高於 B-Tree 索引。
可 能許多人又有疑問了,既然 Hash 索引的效力要比 B-Tree 高許多,為何年夜家不都用 Hash 索引而還要應用 B-Tree 索引呢?任何事物都是有兩面性的,Hash 索引也一樣,固然 Hash 索引效力高,然則 Hash 索引自己因為其特別性也帶來了許多限制和弊病,重要有以下這些。
(1)MySQL Hash索引僅僅能知足"=","IN"和"<=>"查詢,不克不及應用規模查詢。
因為 MySQL Hash索引比擬的是停止 Hash 運算以後的 Hash 值,所以它只能用於等值的過濾,不克不及用於基於規模的過濾,由於經由響應的 Hash 算法處置以後的 Hash 值的年夜小關系,其實不能包管和Hash運算前完整一樣。
(2)MySQL Hash索引沒法被用來防止數據的排序操作。
因為 MySQL Hash索引中寄存的是經由 Hash 盤算以後的 Hash 值,並且Hash值的年夜小關系其實不必定和 Hash 運算前的鍵值完整一樣,所以數據庫沒法應用索引的數據來防止任何排序運算;
(3)MySQL Hash索引不克不及應用部門索引鍵查詢。
關於組合索引,Hash 索引在盤算 Hash 值的時刻是組合索引鍵歸並後再一路盤算 Hash 值,而不是零丁盤算 Hash 值,所以經由過程組合索引的後面一個或幾個索引鍵停止查詢的時刻,Hash 索引也沒法被應用。
(4)MySQL Hash索引在任什麼時候候都不克不及防止表掃描。
後面曾經曉得,Hash 索引是將索引鍵經由過程 Hash 運算以後,將 Hash運算成果的 Hash 值和所對應的行指針信息寄存於一個 Hash 表中,因為分歧索引鍵存在雷同 Hash 值,所以即便取知足某個 Hash 鍵值的數據的記載條數,也沒法從 Hash 索引中直接完成查詢,照樣要經由過程拜訪表中的現實數據停止響應的比擬,並獲得響應的成果。
(5)MySQL Hash索引碰到年夜量Hash值相等的情形後機能其實不必定就會比B-Tree索引高。
關於選擇性比擬低的索引鍵,假如創立 Hash 索引,那末將會存在年夜量記載指針信息存於統一個 Hash 值相干聯。如許要定位某一筆記錄時就會異常費事,會糟蹋屢次表數據的拜訪,而形成全體機能低下。 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved