MySQLのハッシュインデックスとの屈折率差B木

ハッシュ間で、唯一=、>、> =、<、<=サポートしています。ファジークエリをサポートしたいとBTREE

MySQLのインデックスは、データのデータ構造を得るのを助けることです。最も一般的なインデックスは、Bツリーインデックスとハッシュインデックスです。

別のエンジンがインデックスの異なるサポートを持っている:INNODBとのMyISAMデフォルトのインデックスは、Bツリーインデックスであり、Mermoryのデフォルトのインデックスは、ハッシュインデックスです。

私たちは、別の方法を取得するには、MySQLで2つのアルゴリズムをどちらのインデックスとハッシュアルゴリズムB木を使用し、クエリの役割は同じではありません。
、B木は、
Bツリー索引は、それだけでなく、=、>、> =、<、<=で使用することができるので、最も一般的に使用されるのMySQLデータベースのインデックス付けアルゴリズムであり、これらの演算子の間の比較だけでなく、限り、使用することができるようなオペレータそのクエリが始まるワイルドカード一定ではなく、例えば:
SELECT *ユーザーからのWHERE名「ジャック%」のように、
SELECT *を名「JAC%のKの%」のようなユーザーから、
定数を使用するワイルドカードの最初であれば、そうでありませんか、インデックスが使用されていない、例えば:
; WHEREユーザー名から「%ジャックのようなSELECT *
; simply_nameようなユーザ名からWHERE SELECT *
2、ハッシュ
(<=>、ハッシュインデックスのみ、例えば、比較などのために使用することができ、= =当量)演算子。それは時間測位データであるため、Bツリーインデックスとは違って何度IOアクセス、ブランチノードへのルートからページへのアクセスへの最後のノードを必要とするので、検索効率は、Bツリーインデックスよりもはるかに高いです。
しかし、なぜ我々は、ハッシュ、それを使用するよりも、B木を使用していますか?自身主な理由は、その特異性のハッシュ、それにも限界と欠点の多くをもたらします:

  1. ハッシュインデックスのみ「=」、「IN」を満たすことができる、「<=>」クエリは、あなたが範囲クエリを使用することはできません。
  2. 共同インデックス、ハッシュインデックスは、インデックスキーのクエリの一部を使用することはできません。
    複数の列の関節のインデックスについては、ハッシュはすべてを使用するすべての使用かのいずれかである、前回の1つまたは少数のキーインデックスクエリー、ハッシュの共同指標である最適なプレフィックスを、サポートBTREE共同インデックスをサポートしていません。インデックスを使用することはできません。
  3. 操作は避けることができないソート、ハッシュインデックスデータ
    によりハッシュインデックスには、ハッシュ計算されたハッシュ値との大小関係と値のハッシュ値の後に格納され、必ずしもハッシュ動作前と全く同じではないので、データベースは、インデックスデータを使用することができません任意の並べ替え操作を避けます。
  4. いつでもハッシュインデックスは、テーブルスキャンを避けることができない
    原因同じハッシュ値の異なるインデックスキーの存在のために、ハッシュ演算により、インデックスキー、ハッシュ演算結果のハッシュ値とハッシュテーブルに格納された情報に対応する行ポインタの後にハッシュインデックスを、ので、いくつかの重要なデータのハッシュを満たすレコードの数は、ハッシュは直接インデックスからクエリを完了できなかった、または実際のデータと対応する結果を比較することによって、テーブルにアクセスする場合でも。
  5. ハッシュインデックスは、ハッシュ値の大きな数が等しいのbtree性能が高いにバインドされていないされた後に発生した
    比較的低いインデックスキーの選択あなたは、インデックスのハッシュを作成した場合、その後、ハッシュ値に関連付けられたポインタ情報に格納されているレコードの数が多いでしょう。非常に面倒になりますログのいずれかを突き止めるためにこのように、下に全体的なパフォーマンスが得られ、何度もテーブルのデータへのアクセスを無駄にします。

1.ハッシュ索引参照データはもちろん、衝突の数が多い場合、パフォーマンスが落ちる、一度データを見つけることができました。BTREEインデックスは次のノードを見ていると、データのハッシュインデックスの効率化がBTREEより高い特定することは明らかである。
2.ハッシュアルゴリズムを等価に基づいているため、非常に明確もそれを見つけるので、不正確コンピューティング、「のような」のように他の範囲発見ハッシュインデックスが無効である、サポートされていない。
3. Bツリーサポート関節指数最適プレフィックス、ハッシュはでサポートされていない関節指数全かしないのいずれかでフィールドを。最適な接頭辞を持ち上げては、すべての混乱し投げ、そして時にはそれはあまりにも多くの通気を思われた;
4.ハッシュインデックスは、ソート、インデックス値と計算されたハッシュ値をサポートしていない必ずしも同じサイズではありません。

 

おすすめ

転載: www.cnblogs.com/baizhanshi/p/11084539.html