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 データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...

Vue ボタンの権限制御の導入

目次1. 手順1. ボタンの権限を定義する2. ストアを定義する3. 権限指示を作成する4. パーミ...

Linux カーネル デバイス ドライバー システム コールに関する注意事項

/**************************** * システムコール**********...

React の 3 つの主要属性における Ref の使用に関する詳細な説明

目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...

Linux での i3 ウィンドウ マネージャーの設定と使用に関するチュートリアル

この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....

MySQLのパラメータについてお話しましょう

序文:以前の記事では、特定のパラメータの機能についてよく紹介してきました。しかし、MySQL パラメ...

JavaScript 関数呼び出しの典型的なサンプルコード

目次JavaScript 関数呼び出しの典型的な例JS関数の定義と呼び出し方法要約するJavaScr...

セマンティックウェブページ XHTML セマンティックマークアップ

構造とプレゼンテーションを分離するもう 1 つの重要な側面は、セマンティック マークアップを使用して...

CentOS6.8 中国語/英語環境切り替えチュートリアル図

1. はじめに英語に慣れていない人は、システムを英語から中国語に変更したいかもしれません。一方、クラ...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

HTML ボディタグと HTML でよく使われる制御タグの詳細な説明

1. <body> タグ: Web ページの本体をマークするために使用されます。body...

Centos7でファイルをバックアップするときは、バックアップファイルにバックアップの日付を追加します

Linux は、システム内のデバイス、インターフェース、ファイル、スタートアップ、アプリケーション ...

nginxの基礎を学ぶ

目次1. nginx とは何ですか? 2. nginx で何ができるのか? 2.1 フォワードプロキ...

JavaScript クロージャの詳細

目次1. クロージャとは何ですか? 2. 閉鎖の役割序文: JavaScript部分ではクロージャが...

MySQL 分離列とプレフィックスインデックスの使用の概要

目次データ列を分離するプレフィックスインデックスとインデックスの選択性データ列を分離するMySQL ...