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アニメーションジャミングソリューションについての簡単な説明

推薦する

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...

SQL 実践演習: オンライン モール データベースの製品カテゴリ データ操作

オンラインショッピングモールデータベース - 商品カテゴリデータ操作(I)プロジェクトの説明電子商取...

Linux echo テキスト処理コマンドの使用法と例

Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...

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

MySQL8.0.22のインストールと設定(超詳細)参考までに、具体的な内容は次のとおりです。みなさ...

システムエラー 1067 を解決するための MySQL データベース グリーン バージョンのインストール チュートリアル

ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

HTML の表の行と列を結合する問題の解決策の詳細な説明

私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...

Linuxファイルシステム操作の実装

この読書ノートでは、主にファイルシステムに関連する操作を記録します。ディスクとディレクトリの容量ディ...

winx64 での mysql5.7.19 の基本的なインストール プロセス (詳細)

1. ダウンロード参考: https://www.jb51.net/softs/451120.ht...

ページ要素の絶対位置と相対位置に関するある程度の理解

今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...

Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決する

以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...

モバイルでのHTML5経由のファイルアップロード

ほとんどの場合、PC でファイルをアップロードするにはプラグインが使用され、フラッシュが導入されても...

Vue+ElementUI はページング関数を実装します - mysql データ

目次1. 問題2. 解決策2.1 ページングコンポーネント2.2 データベースデータを取得する関数:...

CSS レスポンシブ レイアウト システムの例コード

レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...