MySQL インデックスの左端原則のサンプルコード

MySQL インデックスの左端原則のサンプルコード

序文

最近、MySQL のインデックスについて読んでいました。結合されたインデックスを見ると、左端の原則が見つかりました。関連情報を検索して、詳しく調べました。詳しい紹介を見てみましょう。

テーブルを作成する

テーブル `user` を作成します (
 `id` int(10) 符号なし NOT NULL AUTO_INCREMENT,
 `name` varchar(10) デフォルト NULL,
 `sex` tinyint(1) デフォルト NULL,
 `age` tinyint(2) デフォルト NULL,
 主キー (`id`)、
 キー `Index_user` (`name`,`age`) BTREE の使用
) ENGINE=InnoDB AUTO_INCREMENT=4 デフォルト CHARSET=utf8mb4;

SQLのテスト

最初

mysql> SELECT * FROM `user` where name="tom" \G を説明します
************************** 1. 行 ****************************
   id: 1
 選択タイプ: シンプル
  テーブル: ユーザー
 パーティション: NULL
   タイプ: ref
可能なキー: Index_user
   キー: Index_user
  キーの長さ: 43
   参照: 定数
   行数: 1
  フィルター: 100.00
  追加: NULL

2番目

mysql> SELECT * FROM `user` where age=18 and name="tom" \G を説明します
************************** 1. 行 ****************************
   id: 1
 選択タイプ: シンプル
  テーブル: ユーザー
 パーティション: NULL
   タイプ: ref
可能なキー: Index_user
   キー: Index_user
  キーの長さ: 45
   参照: const、const
   行数: 1
  フィルター: 100.00
  追加: NULL

3番目

mysql> SELECT * FROM `user` where age=18 \G を説明します
************************** 1. 行 ****************************
   id: 1
 選択タイプ: シンプル
  テーブル: ユーザー
 パーティション: NULL
   タイプ: すべて
可能なキー: NULL
   キー: NULL
  キー長さ: NULL
   参照: NULL
   行数: 3
  フィルター: 33.33
  追加: where の使用
セットに 1 行、警告 1 件 (0.00 秒)

4番目

mysql> explain SELECT * FROM `user` where name="tom" and age=18 \G
************************** 1. 行 ****************************
   id: 1
 選択タイプ: シンプル
  テーブル: ユーザー
 パーティション: NULL
   タイプ: ref
可能なキー: Index_user
   キー: Index_user
  キーの長さ: 45
   参照: const、const
   行数: 1
  フィルター: 100.00
  追加: NULL
セットに 1 行、警告 1 件 (0.00 秒)

要約する

このことから、SQL の where 句に結合インデックスの最初のフィールドが含まれているクエリのみがインデックスにヒットできることがわかります。これは、インデックスの最左一致機能と呼ばれます。 結合インデックスの使用は、where 条件の記述順序とは関係ありません。MySQL クエリ分析が最適化され、インデックスが使用されます。ただし、クエリ アナライザーへの負荷を軽減するには、インデックスの左から右への順序を一定に保つことが最善です。

b+ツリーのデータ項目は複合データ構造です。たとえば、(名前、年齢、性別) を使用すると、b+ツリーは左から右の順に検索ツリーを構築します。たとえば、(張さん、20、女性) などのデータを取得する場合、b+ツリーは最初に名前を比較して次の検索方向を決定します。名前が同じ場合は、年齢と性別を順に比較して、最終的に取得したデータを取得します。ただし、名前のない (20、女性) などのデータが見つかった場合、検索ツリーが確立されるときに名前が最初の比較要素となるため、b+ツリーは最初のステップでどのノードをチェックすればよいかわかりません。次にどこを照会するかを知るには、最初に名前に基づいて検索する必要があります。

さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLジョイントインデックスの左端一致原則の詳細な分析
  • MySQL の結合インデックスと左端一致原則の詳細な説明
  • MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。
  • MySQLインデックスを追加する3つの原則を簡単に理解する
  • 1 つの記事で MySQL インデックス作成の原則を理解する

<<:  Linux リモート開発に vs2019 を使用する方法

>>:  要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)

推薦する

Windows Server 2008R2、2012、2016、2019 の違い

目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...

Linux がますます人気になっている 10 の理由

Linux はますます多くのユーザーに愛されてきました。なぜ Linux はこれほど急速に発展し、い...

Docker コンテナのカスタム ホストのネットワーク アクセス操作

docker-compose.yml に extra_hosts キーワードを追加すると、コンテナの...

Centos7 に Docker をインストールします (2020 の最新バージョンが利用可能、コピーして貼り付けるだけ)

操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...

Mysql5.7 で JSON 操作関数を使用する手順

序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...

Ubuntu ブート自動起動サービス設定

Ubuntu でサービスを作成し、自動的に起動する方法: 1. [/lib/systemd/syst...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

VMware IOInsight を使用して、仮想マシンのストレージ パフォーマンスの監視を改良する

例: VMware IOInsight は、VM のストレージ I/O 動作を理解するのに役立つツー...

mysqlのkey_lenの計算方法についての簡単な説明

MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが ...

jQueryはシンプルなポップアップウィンドウ効果を実装します

この記事では、簡単なポップアップウィンドウ効果を実現するためのjQueryの具体的なコードを参考まで...

Web デザインにおける HTML フォーマットと長いファイルに関するヒント

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

nginx を使用して http を https に変換するサンプルコード

最近、小さなプログラムを書いています。その小さなプログラムの公式ウェブサイトはhttpsを使用する必...

メニューノードのすべての子ノードを再帰的に検索する MySQL メソッド

背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

CSS ピクセルとさまざまなモバイル画面適応の問題に対する解決策

ピクセル解決通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクト...