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

推薦する

Dockerコンテナの紹介

1. 概要1.1 基本概念: Docker は、Go 言語をベースにしたオープンソースのアプリケーシ...

iPhone デバイスの WAP ページでフォントサイズが大きい問題の解決策

JavaScriptコントロールを使用したくない場合は、次の方法を試してください。 Safariブラ...

VirtualBox に CentOS、JDK、Hadoop をインストールする詳細なチュートリアル

目次1. 前提条件1.1 サポートされているプラ​​ットフォーム1.2 jdk および hadoop...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

MySQLのINサブクエリによってインデックスが使用できなくなる問題を解決する

今日は、MySQL IN サブクエリの最適化に関するケーススタディを見ました。最初は少し懐疑的でした...

Vueはカスタム命令を使用してページの下部に透かしを追加します

プロジェクトシナリオプロジェクトの背景全体にカスタム透かしを追加します。透かしのテキスト、フォントの...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

CSS の高度な使い方(実戦で活用)

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...

CentOS 7 での mysql 5.7 のインストール チュートリアル

1. 公式MySQL Yumリポジトリをダウンロードしてインストールする 実行ファイル: mysql...

MySQL infobrightのインストール手順

目次1. 次のように、「rpm -ivh インストール パッケージ」コマンドを使用して rpm パッ...

JavaScript での正規表現の使用について詳しく学ぶ

目次1. 正規表現とは何か1. 正規表現の特徴2. 正規表現の使用2. 正規表現における特殊文字1....

CSS の border 属性と display 属性の使い方の簡単な分析

境界プロパティの概要borderプロパティは要素の境界を設定します。境界線の3要素は、太さ、線の種類...

純粋な CSS ドロップダウン メニュー

成果を達成する実装コードhtml <div id="コンテナ"> &...

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...