代わりに、ハッシュテーブルのB +ツリーとなぜMySQLのインデックス?

配置後に特殊ハッシュインデックス構造、その検索効率が非常に高く、インデックスが分岐ノードへのルートからB + Treeインデックスのニーズ、そして最後に、このページへのアクセスに何回IOアクセスノード、インデックスのハッシュとは異なり、検索することができていますクエリの効率はB + Treeインデックスよりもはるかに高いです。

ハッシュインデックスの効率はB +ツリーよりもはるかに高いので、多くの人々は、なぜ我々はすべての使用ハッシュをしないでください、疑問を持っていること また、インデックスとB +のREE指数の使用は?なぜならその特異ハッシュの高効率ハッシュインデックスが、インデックス自体も主に次のように、制限および欠点の多くをもたらしたもののすべてが、ハッシュインデックスが同じであるの両側を持っています。

  1. ハッシュインデックスは、あなたが範囲クエリを使用することはできません「=」、「IN」と「<=>」クエリを満たすことができます。
    ハッシュインデックスハッシュ値の比較は、ハッシュ演算の後に行われるので、それが唯一の理由サイズ関係ハッシュ値対応するハッシュアルゴリズムによって処理した後、使用することができないフィルタの範囲に基づいて、等価をフィルタリングするために使用することができる、ことができず前とハッシュ動作を確実とまったく同じ。
  2. ハッシュインデックスは、ソート操作をデータを避けるために使用することはできません。
    インデックスは、次のハッシュ、ハッシュ値との大小関係を介して算出されたハッシュハッシュ値を格納され、データベース操作の任意の並べ替えを避けるために、インデックスデータを使用できないような値は、ハッシュ演算前と必ずしも厳密に同じではないからです。
  3. ハッシュインデックスは、インデックスキーのクエリの一部を使用することはできません。
    代わりに、一方の前面または複合インデックスキーのいくつかの、インデックスハッシュを介して、単独でクエリインデックスをハッシュ値を算出する、時間インデックスの組み合わせのために、ハッシュハッシュ値を算出する指標が計算され、次いで、複合インデックスキーのハッシュ値と結合します使用することはできません。
  4. いつでもハッシュインデックスはテーブルスキャンを回避することはできません。
    既に知られているように、ハッシュ演算によってインデックスキー後ハッシュインデックス、ハッシュ値により同一のハッシュ値が異なるインデックスキーの存在のために、ハッシュテーブルに格納された情報に対応するハッシュ計算結果と行ポインタもテイクを満たす特定の場合データのレコード数ハッシュキーを直接クエリハッシュインデックスから行うことができない、またはテーブル内の実際のデータ、および対応する結果にアクセスすることによって適切な比較を行うこと。
  5. パフォーマンスは必ずしも高い大型ハッシュ値が等しい遭遇したB +ツリーインデックスハッシュインデックスのものよります。
    あなたは、インデックスのハッシュを作成した場合、比較的低い選択のインデックスキーについては、その後、ハッシュ値に関連付けられたポインタ情報に格納されているレコードの数が多いでしょう。ログの一つは、より低い全体的なパフォーマンスが得られ、表データに多くの訪問を無駄にするとき、このような位置決めは非常に面倒になります

簡単に言えば、ハッシュインデックスは、特定のハッシュアルゴリズムを使用することで、B +ツリーに、同様の新しいハッシュ値のキー用語は、単一のハッシュアルゴリズムを使用して取得されたリーフノードへのルートからステップバイステップのように見える必要はありませんそれは非常に速く、適切な場所に即座に配置することができます。

大きく異なるとハッシュインデックスB +ツリーインデックスは、次のとおりです。

  1. クエリが同等であれば1つのアルゴリズムだけ後に適切なキーを見つけることがあるため、その後、ハッシュインデックスは、明らかに、絶対的な優位性を持っています。もちろん、この前提は、キーがユニークであるということです。キーが一意でない場合、キーの位置が存在している見つけることが必要であることが適切なデータを見つけるまで、次のスキャンリストに従って。
  2. もともとアルゴリズムが不連続になることがありハッシングした後、キー、および再利用する方法は、インデックスの完全な範囲を命じたため、問合せは、完全に無用の範囲、今回のハッシュインデックスである場合クエリ;
  3. 同様に、ハッシュインデックスが注文を完了するためにインデックスを使用する方法はありません、そして「XXX%」のようなあいまいクエリのこの部分は、(部分的に不明瞭クエリが、実際には、本質的には、範囲クエリです)。
  4. ハッシュインデックスは、左端の列のジョイントマルチマッチングルールインデックスをサポートしていません。
  5. B +ツリー索引キーワード検索効率は、いわゆるハッシュ衝突があるため大きな変動としてBツリーとは異なり、重複キーの多数の場合には、効率のハッシュインデックスは、非常に低く、比較的平均です。
公開された80元の記事 ウォン称賛96 ビュー360 000 +

おすすめ

転載: blog.csdn.net/Alen_xiaoxin/article/details/104753391