序文カバーリング インデックスについて説明する前に、まずそのデータ構造である B+ ツリーを理解する必要があります。 まず、デモンストレーション用のテーブルを作成します (簡単にするために、ID は順番に作成されます)。
主キー以外の列値をキー値として構築されたB+ツリーインデックスを非クラスター化インデックスと呼びます。 非クラスター化インデックスとクラスター化インデックスの違いは、非クラスター化インデックスのリーフ ノードにはテーブル内のデータが格納されず、列に対応する主キーが格納されることです。データを検索する場合は、主キーに基づいてクラスター化インデックスも検索する必要があります。クラスター化インデックスに基づいてデータを検索するこのプロセスは、テーブル リターンと呼ばれます。 B+ ツリーB+ ツリーと B ツリーは、MySQL インデックスでよく使用されるデータ構造です。B+ ツリーは、B ツリーをさらに最適化したものです。上記の表を分析のためにグラフに変換してみましょう。 B+ツリーの特徴: 1. B+ツリーの非リーフノードはデータを保存せず、キー値のみを保存します。 2. リーフノードのデータは順番に並べられる 3. B+ツリーのページは双方向リンクリストで接続されています クラスター化インデックスと非クラスター化インデックスB+ ツリー インデックスは、保存方法の違いにより、クラスター化インデックスと非クラスター化インデックスに分けられます。 クラスター化インデックス: ストレージ エンジンとして InnoDB を使用するテーブルの場合、テーブル内のすべてのデータに主キーが設定されます。主キーを作成しなくても、システムによって暗黙的な主キーが作成されます。 これは、InnoDB がデータを B+ ツリーに格納し、B+ ツリーのキー値が主キーとなるためです。テーブル内のすべてのデータは、B+ ツリーのリーフ ノードに格納されます。 主キーを B+ ツリー インデックスのキー値として使用するこのような B+ ツリー インデックスは、クラスター化インデックスと呼ばれます。 非クラスター化インデックス: 主キー以外の列値をキー値として構築されたB+ツリーインデックスを非クラスター化インデックスと呼びます。 非クラスター化インデックスとクラスター化インデックスの違いは、非クラスター化インデックスのリーフ ノードにはテーブル内のデータが格納されず、列に対応する主キーが格納されることです。データを検索する場合は、主キーに基づいてクラスター化インデックスも検索する必要があります。クラスター化インデックスに基づいてデータを検索するこのプロセスは、テーブル リターンと呼ばれます。 カバーインデックスを使用してテーブルバックを回避する方法非主キー インデックスを使用しているのに、テーブルが返されるのはなぜでしょうか。簡単に言うと、非主キー インデックスは非クラスター化インデックスです。B+ ツリーのツリー子ノードには、主キーと非主キー インデックスのみが保存されます。1 つのクエリで見つけられるのは、この 2 つのフィールドだけです。3 つのフィールドを見つけたい場合は、クラスター化インデックスを再度検索する必要があります。これがテーブルが返される理由です。 たとえば、新しいフィールド age がテーブルに追加され、name を使用してインデックス (非クラスター化インデックス) が作成されます。
name = 'zs' の場合、ユーザーから id、name を選択します。 名前インデックスにヒットできます。インデックス リーフ ノードには主キー ID が格納されます。ID と名前は、テーブルに戻らずに名前インデックス ツリーを通じて取得できます。これにより、インデックス カバレッジ要件が満たされ、非常に効率的です。 name = 'zs' の場合、ユーザーから id、name、age を選択します。 名前インデックスはヒットできます。インデックス リーフ ノードには主キー ID が格納されていますが、年齢フィールドはクエリのテーブルに戻ることによってのみ取得できるため、インデックス カバレッジを満たしていません。年齢フィールドを取得するには、ID 値を通じてコードを再度スキャンする必要があり、効率が低下します。 結論: では、テーブル リターンを回避するにはどうすればよいでしょうか? 簡単です。単一列インデックス (名前) を結合インデックス (名前、年齢) にアップグレードします。 要約するこれで、MySQL でカバーリング インデックスを使用してテーブル リターンを回避し、クエリを最適化する方法についての記事は終わりです。MySQL でカバーリング インデックスを使用してテーブル リターンを回避し、クエリを最適化する方法についての関連記事については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vue ライフサイクルの紹介とフック関数の詳細な説明
イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...
目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...
MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...
導入今日は、MySQL の sum 関数の使い方を紹介します。この関数は、MySQL データベースを...
序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...
目次1. データソース2. データの総合順位1) 総合ランキング2) 同順位3) 同順位3. データ...
シェル スクリプトで電子メールを作成する必要がある場合は、コマンド ラインから電子メールを送信する知...
最近、プロジェクトに取り組んでいるときに、Web ページ上のキーワードを強調表示する機能に遭遇しまし...
1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...
テキスト入力でプレースホルダーを使用していますが、問題なく動作します。しかし、選択ボックスにはプレー...
この記事では、MySQL 5.7.21 のインストールと設定方法を記録し、皆様と共有します。 1. ...
スワップ スペースは、オペレーティング システムに関係なく、今日のコンピューティングの一般的な側面で...
ユーザーが登録すると、ラベルをクリックして確認コードを変更します。クリックするとラベルに影の部分がで...
ブラウザの互換性とは、スタイルの互換性 (CSS)、インタラクションの互換性 (JavaScript...
<br />私の仕事で使用しているアノテーションの書き方の基準をまとめました。技術的な内...