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はクリックトグル機能を実装します

この記事の例では、クリックして切り替える機能を実装するためのJavaScriptの具体的なコードを参...

MySQL における ESCAPE キーワードの使用法の詳細な説明

MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...

Jenkinsはマイクロサービスをパッケージ化してDockerイメージを構築し、実行します。

目次環境の準備始める1. GitLabリモートリポジトリがマイクロサービスプロジェクトを作成する2....

マークアップ言語 - CSS レイアウト

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

jsはCanvasを使用して複数の画像を1つの実装コードにマージします

解決 関数 mergeImgs(リスト) { const imgDom = document.cre...

TypeScript の Enum が問題となる理由

目次どうしたの?いつ使うか列挙の数を制御するビット値コントロールインデックス非数値列挙結論はType...

nginx ssl を設定して https アクセスを実装する手順 (初心者向け)

序文サーバーを展開した後、私は大きな喜びを感じながら自分の Web サイトにアクセスし、見たものすべ...

CocosCreator ScrollView 最適化シリーズ: フレーム読み込み

目次1. はじめに2. 行き詰まった問題の分析3. 解決策(理論) 4. ソリューション(コード) ...

Linux で 1 回限りのスケジュールされたタスクを実行するための at コマンドの使用に関する詳細な説明

目次序文1. 一度限りの計画タスクの紹介2. コマンド3. 1回限りのスケジュールタスクを作成する4...

HTML でスタイルを使用して属性を追加する例

必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

ページ切り替え効果を実現するJSコード

この記事の例では、ページ切り替え効果を実現するためのJSコードの具体的なコードを参考までに共有してい...

一般的なブラウザのユーザーエージェントの概要

1. 基礎知識: HTTP ヘッダー ユーザーエージェントユーザー エージェントは、ユーザー エージ...

CSS の ::before と ::after 疑似要素について知らないこと

CSS には、一般的には使用されない 2 つの疑似クラス、before と :after があります...

アルバムと写真をアルバムに保存するためのWeChatアプレット

私は現在、Xiao Nian Gao に似たビデオおよびツール アプリを開発しています。ユーザーが作...