MySQL セカンダリ インデックス クエリ プロセスとは何ですか?

PHPz
リリース: 2023-05-27 12:16:13
転載
1177 人が閲覧しました

序文

クラスター化インデックスは、デフォルトで innodb によって作成される主キーベースのインデックス構造であり、テーブル内のデータは、リーフ ノードのデータ ページとしてクラスター化インデックスに直接配置されます。

MySQL セカンダリ インデックス クエリ プロセスとは何ですか?

##主キーに基づくデータ検索: クラスター化インデックスのルート ノードからバイナリ検索を開始し、対応するデータ ページを最後まで見つけて、主キー ターゲットを直接見つけます。ページディレクトリに基づくデータ。

他のフィールドにインデックスを作成したい場合、または複数のフィールドに基づいて結合インデックスを作成したい場合、現時点でのインデックス構造はどのようなものですか?

名前、年齢など、他のフィールドにもインデックスが作成されていると仮定すると、同じ原則が適用されます。たとえば、データを挿入する場合:

    #完全なデータをクラスター化インデックスのリーフ ノードのデータ ページに挿入し、同時にクラスター化インデックスを維持します
  • 他のフィールド用に作成されたインデックスについては、B ツリーを再作成します
  • ##たとえば、名前フィールドに基づいてインデックスを作成する場合、データが挿入されると、B ツリーが再作成されます。B ツリーのリーフ ノードもデータ ページですが、このデータ ページには主キー フィールドと名前フィールドのみが配置されます。

これは、クラスターから独立した B ツリーに基づく名前フィールドです。クラスター インデックスのインデックス構造。そのリーフ ノードに格納されるデータには値のみが含まれます。主キーと名前フィールドの。 MySQL セカンダリ インデックス クエリ プロセスとは何ですか?

全体的な並べ替えルールは、主キーに基づくクラスター化インデックスの並べ替えルールと同じです。つまり、

データ内の名前の値リーフ ノードのページはすべてソートされています
  • 次のデータ ページの名前フィールドの値は、前のデータ ページの名前フィールドの値よりも高くなります
  • 名前フィールドのインデックス B ツリーも複数レベルのインデックス ページが構築されます。インデックス ページには、次のレベルのページ番号が格納されます:

#次のレベルのページ番号

  • 名前フィールド値の並べ替えに従った、名前フィールドの最小値。

  • したがって、名前フィールドに基づいてデータをクエリする場合も、プロセスは同じです。名前インデックス ツリーのルート ノードから開始して、データが見つかるまでレイヤーごとに検索します。リーフ ノードのページで、name フィールド値に対応する主キー値を見つけます。

  • その後、
select * from t where name='xx'
ログイン後にコピー

のようなステートメントの場合、最初に名前の値に基づいて名前インデックス ツリーを検索し、リーフ ノードを見つけます。対応する主キー値のみが見つかりますが、この行は見つかりません。のデータが見つかりません。すべてのフィールド。

したがって、まだテーブルに戻る必要があります。主キー値に従ってルート ノードから開始してクラスター化インデックスに移動し、リーフ ノードのデータ ページを見つけて、完全なデータを見つける必要があります。主キー値に対応する行 この時点でのみ、

select *

で必要なすべてのフィールド値を取り出すことができます。

ジョイントインデックスたとえば、名前age、実行プロセスは同じで、独立したBツリーが確立され、リーフノードのデータページにID名ageが格納された後、デフォルトでは名前順に並べ替えられます。同じ名前の場合は名前順に並べ替えられます。年齢ランキングは、異なるデータ ページ間での名前の年齢値の並べ替えにも同じことが当てはまります。

次に、この名前 age の結合インデックスの B ツリーのインデックス ページが保存されます。

次の層ノードのページ番号

  • 名前年齢の最小値

  • したがって、名前年齢に基づいて検索する場合は、名前年齢ジョイント インデックス ツリーをたどって、主キーを検索します。をクリックし、主キーに基づいてクラスター化インデックスに移動し、検索します。

以上がMySQL セカンダリ インデックス クエリ プロセスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート