MySQLデータベースインデックスの左端一致原則

MySQLデータベースインデックスの左端一致原則

1. 共同インデックスの説明

3つのフィールドの結合インデックスを作成する

結合インデックス (a,b,c) は、インデックス (a), (a,b), (a,b,c) を作成することと同じです。

2. ac はインデックスを使用できますか?

先給出結論:a可以命中聯合索引(a,b,c),c無法命中,所以ac組合無法命中聯合索引。

1. abc共同インデックス(州、市、地区)を作成する

ここに画像の説明を挿入

ac インデックス クエリ

SELECT * FROM user_address WHERE 省 = '広東省' 
AND 地区 = '南雄市'

ここに画像の説明を挿入

表示クエリ範囲は ALL です

2. 2つのフィールドacのジョイントインデックスを直接作成する

ここに画像の説明を挿入

SELECT * FROM user_address WHERE 省 = '広東省' 
AND 地区 = '南雄市'

ここに画像の説明を挿入

クエリの結果、ref はインデックスを使用し、スキャンされた行数も 21 から 13 に変更されました。

3.abインデックスクエリ
ここに画像の説明を挿入

クエリスコープはrefです

結論は

abc の結合インデックス、ac の c はこれら 3 つのフィールドの結合インデックスにヒットできませんが、a はヒットできるため、possible_keys 列には結合インデックスが使用されていることが示されます。

3. 考える

abc インデックス、acb はインデックスに従いますか?

  • 左端のプレフィックス一致の原則に従って、MySQL は範囲クエリ (>、<、between、like) に遭遇して一致を停止するまで、右側への一致を続けます。
  • 例えば、a=3、b=4、c>5、d=6 の場合、(a、b、c、d) の順序でインデックスを作成すると、d は使用されません。(a、b、d、c) の順序でインデックスを作成すると、すべて使用でき、a、b、d の順序は任意に調整できます。
  • = および in は任意の順序で記述できます。たとえば、a=1、b=2、c=3 などです。(a、b、c) インデックスは任意の順序で作成できます。MySQL クエリ オプティマイザーを使用すると、インデックスが認識できる形式に最適化できます。

4. 最左マッチング原理の原因

  • なぜなら、abcのような結合インデックスは順序付けられていると理解でき、その形成の基礎はaの上に構築され、aからbを構築し、bからcを構築するため、順序付けられている必要があるからです。
  • 簡単に言えば、まず a をソートしてインデックスを作成し、次に a に基づいて b をソートし、最後に c をソートするということです。
  • したがって、結合インデックスが範囲クエリに遭遇すると、後続のインデックスは無効になります。

これで、MySQL データベース インデックスの最左一致原則に関するこの記事は終了です。MySQL インデックスの最左一致に関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL データベースのインデックスと障害シナリオの詳細な説明
  • MySQLデータベースインデックスの詳細な紹介
  • MySQLデータベースインデックスの詳細な説明
  • MySQL データベースのインデックスとトランザクション
  • MySQL データベースのインデックス順序の詳細な説明
  • MySQLデータベースインデックスの欠点と適切な使用
  • MySQLデータベースのトランザクションとインデックスの詳細な説明
  • MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)
  • Mysql データベース テーブルのインデックスによってクエリ速度が向上しないのはなぜですか?

<<:  vueの実践的な応用におけるvuexの永続性の詳細な説明

>>:  Linuxシステムの操作レベルの詳細な紹介

推薦する

MySQL インデックス カバレッジの例の分析

この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...

MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

序文:前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザ...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

ウェブ画像形式としてPNG、JPG、GIFを選択して使用する方法

では、GIF、PNG、JPG のどの形式を候補形式として選択すればよいのでしょうか。また、どの画像形...

Centos6にMysql5.7をインストールする方法

環境セントロス6.6 MySQL 5.7インストールシステムがインストールされている場合は、まずアン...

モバイル開発におけるHTML5開発の現状を深く理解する

「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...

ローカル画像サーバーのNginx構成の実装

目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...

自動検索提案機能のスタイルファイルを入力します: suggestion.css

コードをコピーコードは次のとおりです。 .sugLayerDiv{位置:相対; overflow:h...

MySQL マルチテーブル共同クエリ操作例の分析

この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下...

Vueカスタムテーブル列実装プロセス記録

目次序文レンダリングsetTable コンポーネント使用結論序文フォームを使用して PC 側のプロジ...

MySQLのグローバルロックとテーブルロックに関する詳細な理解

序文ロックの範囲に応じて、MySQL のロックは、グローバル ロック、テーブル ロック、行ロックに大...

バランスの取れたデジタルスクロール効果を実現するJavaScript

目次1. 実施の背景2. 実装のアイデア3. 実施プロセス1. 実施の背景先週、ユーザーがタスクを完...

Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...

TypeScript 列挙の基本と例

目次序文TypeScript の列挙型とは何ですか? TypeScriptで列挙型を使用する際に注意...

Vue の基本的な手順の例のグラフィック説明

目次1. v-on指令1. 基本的な使い方2. 糖衣構文3. イベントパラメータ4. イベント修飾子...