注: この記事では主に InnoDB ストレージ エンジンの B ツリー インデックス データ構造に焦点を当てます。
以下では主に 5 つのインデックス タイプとそれぞれの特徴と相違点を紹介します。
1.B ツリー インデックス
ストレージ エンジンはデータを取得するためにテーブル全体のスキャンを実行する必要がないため、B ツリー インデックスから直接検索を開始します。インデックスのルート ノード。これにより、データへのアクセスが高速化されます。
利点:
B ツリーはインデックスを順番に保存するため、範囲データの検索に非常に適しており、完全なキー値、キー値の範囲、またはキーに適しています。接頭辞検索 (左端の接頭辞に基づいて検索)
制限事項:
結合インデックスの場合、左端の列から検索を開始しないと、インデックスを作成できません。
2 をスキップすることはできません。B ツリー インデックス
は B ツリー インデックスのバリアントです。現在、主流のストレージ エンジンは純粋な B ツリーを使用していません。ただし、そのバリアントである B ツリーや T ツリーなどの
と B ツリーの違い:
と B ツリーの主な違いは、コンテンツです。の B ツリー ノードはデータを格納せず、キーのみを格納し、リーフ ノードはポインタを格納しません
3. ハッシュ インデックス
ハッシュ テーブルに基づいて実装され、メモリのみが格納されますストレージ エンジンは明示的です
利点:
ハッシュ インデックスをサポート
=、in()、<=> などの等しい値のクエリに適しています
欠点:
レンジクエリをサポートしていない
インデックス値の順序で格納されないため、B Tree インデックスのようにインデックスを使用して完全なソートを行うことはできません。ハッシュ インデックスは常にすべての列の内容全体にインデックスを付けるため、同等の値をクエリする場合は非常に高速です。そのため、部分的なインデックス列での一致検索はサポートされていません。
重複するキー値が多数ある場合、ハッシュ衝突の問題により、ハッシュ インデックスの効率が非常に低くなります。プログラマは、B ツリー インデックスに基づいて適応型ハッシュ インデックスを作成できます
4. フルテキスト インデックス
MyISAM と InnoDB はどちらも、自然言語モード、ブール モード、クエリ拡張モードの 3 つのモードでフルテキスト インデックスをサポートしています
5.R ツリー インデックス
MyISAM は R ツリー インデックスをサポートします。これは基本的にフルテキスト インデックスと同じです
以上がMySQL のインデックスの種類と特徴は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。