MySQL ジョイントインデックス(複合インデックス)の実装

MySQL ジョイントインデックス(複合インデックス)の実装

共同インデックス

この記事におけるジョイントインデックスの定義は次のとおりです (MySQL):

ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);

共同インデックスの利点

SQL ステートメントが複数ある場合は、2 つの条件が必要です。

SELECT * FROM `user_info` WHERE username='XX',password='XXXXXX';

インデックスがpasswordフィールドを検索する場合、データ量が大幅に削減され、インデックス ヒット率が低下し、インデックスの効率が向上します。

マッチング インデックスのサイズは単一のインデックスのサイズよりも小さく、単なるインデックス ツリーであるため、単一の列インデックスよりも時間とスペースの複雑さが軽減されます。

ジョイントインデックスヒットの本質(左端の一致の理解)

意味

( col1col2col3 ) 結合インデックスを作成すると、( col ) 単一列インデックスを作成するのと同じになります。( clo1clo2 ) 結合インデックスと ( col1col2col3 ) 結合インデックスを有効にするには、 col1col1col2col1col2col3の 3 つの組み合わせのみ使用できます。もちろん、 col1col3の組み合わせも可能ですが、実際にはcol1のインデックスのみが使用され、 col3使用されません。

一般的な理解

ジョイント インデックスは姓氏——名字で整理された電話帳のようなものです。最初に姓を決定した場合にのみ、インデックスにヒットできます。次のステートメントは、ジョイント インデックスに正しくヒットできます ( =INの直接のフィールドはランダムな順序であってもよく、MySQL クエリ オプティマイザはそれをインデックス認識形式に最適化できます)。

-- col1、col2 のみをヒット
SELECT * FROM `table_name` WHERE `col1`='XX';
-- col1、col2 をヒットします。 col1 と col2 の順序は逆にすることができます SELECT * FROM `table_name` WHERE `clo1`='XX',`clo2`='XXX'; 
SELECT * FROM `table_name` WHERE `clo2`='XXX', `clo1`='XX';
-- col1、col2、col3 をヒットします。同様に、3 つの列の順序を逆にすることもできます。SELECT * FROM `table_name` WHERE `col1`='X',`col2`='XX',`col3`='XXX';
SELECT * FROM `table_name` WHERE `col1`='X',`col3`='XX',`col2`='XXX';
SELECT * FROM `table_name` WHERE `col2`='X',`col3`='XX',`col1`='XXX';

MySQL ジョイントインデックス (複合インデックス) の実装に関するこの記事はこれで終わりです。MySQL ジョイントインデックスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL複合インデックスの概要
  • MySQL複合インデックスの詳細な研究
  • Mysqlの制限を最適化し、100万から1000万までの高速ページングの複合インデックスを参照し、軽量フレームワークに適用します。
  • Mysqlの制限を最適化し、100万から1000万までの高速ページングの複合インデックスを参照し、軽量フレームワークに適用します。
  • MySQL の複合インデックスはどのように機能しますか?

<<:  HTMLタグIDは変数にできる

>>:  CSS3アニメーションジャミングソリューションについての簡単な説明

推薦する

Vueはアンカー配置機能を実装します

この記事では、アンカー配置を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、ti...

EXPLAIN を使って MySQL の SQL 実行プランを分析する方法

序文MySQL では、EXPLAIN コマンドを使用して、テーブルの接続方法や SELECT ステー...

Navicat for MySQLのスケジュールされたデータベースバックアップとデータ復旧の詳細

データベースの変更または削除操作によってデータ エラーが発生したり、データベースがクラッシュしたりす...

Dockerを使用してコンテナリソースを制限する方法

覗き見の問題サーバーでは、IIS サービスが複数のサイトを展開していると仮定すると、サイトの 1 つ...

JavaScript PromiseとAsync/Awaitの詳細な説明

目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...

mysql5.7.14 解凍版インストールグラフィックチュートリアル

MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...

Linux の RPM パッケージでインストールされた xinetd ベースのサービスの管理

目次序文1. xinetdサービスに基づく起動管理(1)Telnetサービスのインストール(2)Te...

MySQL の結合インデックスと左端一致原則の詳細な説明

序文これまでインターネットでMySQLジョイントインデックスの最左接頭辞マッチングに関する記事をたく...

Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)

1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...

Dockerコンテナのディスクがいっぱいになった場合の状況のまとめ

序文この記事では、最近私が遭遇した 2 つの状況について説明します。今後、新たな発見があれば追加して...

訪問者にあなたのウェブサイトを覚えてもらうための3つの便利なコード

訪問者があなたのウェブサイトを覚えておくのに役立つ3つの便利なコード。お気に入りに追加するためのヒン...

ランダムな文字を生成する Java サンプルコード

サンプルコード: java.util.Random をインポートします。 java.util.UUI...

JavaScript における this ポイントの問題の詳細な説明

要約する地球環境 ➡️ ウィンドウ通常関数 ➡️ ウィンドウまたは未定義コンストラクター ➡️ 構築...

arcgis.js は、マップ本体の表示範囲を制御し、領域を超えた場合に自動的にバウンスするようにします (実装のアイデア)

目次背景効果アイデア背景少し前に、会社のプロジェクトで問題が発生しました。地図のベースマップ領域の範...