MySQLカバーインデックスの使用例

MySQLカバーインデックスの使用例

カバーインデックスとは何ですか?

クエリで使用されるすべてのフィールドを含むインデックスを作成することを、カバーリング インデックスと呼びます。

カバーリング インデックスを使用すると、MySQL はインデックスを使用してデータを処理した後にテーブルを返す操作を実行する必要がなく、クエリに必要なデータを検索して返すためにインデックスを使用するだけで済みます。

カバーインデックスを使用すると、クエリ作業を一度に完了できるため、IO が効果的に削減され、クエリの効率が向上します。

使用例

クエリステートメント:

test_table から col2、col3 を選択し、col1 = xxx で col2 を ORDER BY します。

単一列のインデックスを作成します。

ALTER TABLE `test_table` に BTREE を使用して INDEX `idx_col1`(`col1`) を追加します。

分析クエリ:

EXPLAIN SELECT SQL_NO_CACHE col2, col3 FROM test_table WHERE col1 = xxx ORDER BY col2;

結果: col1 のインデックスを作成した後、タイプは ref になり、idx_col1 インデックスが使用されます。

インデックスを変更し、クエリ ステートメントに基づいて結合インデックスを作成します。

テーブル `test_table` を変更し、インデックス `idx_col1` を削除します。
ALTER TABLE `test_table` ADD INDEX `idx_col1_col2_col3`(`col1`, `col2`, `col3`) USING BTREE;

分析クエリ:

EXPLAIN SELECT SQL_NO_CACHE col2, col3 FROM test_table WHERE col1 = xxx ORDER BY col2;

結果: 結合インデックスが作成されると、type は ref、idx_col1_col2_col3 インデックスが使用され、Extra は Using index となり、カバー インデックスが使用されていることが示されます。

MySQLのカバーインデックスとジョイントインデックスの違い

カバーリング インデックスとは、主キー リストの列のみをクエリするなど、クエリ対象の列をインデックスを通じて直接抽出できることを意味します。または、結合インデックスのすべての列、または左から始まるいくつかの列をクエリします (順序どおりであることに注意してください)。

結合インデックスは必ずしもインデックスからすべてのデータを取得するわけではありません。これはクエリする列によって異なります。たとえば、select * from table where ××××××; という方法は、カバーリングインデックスになる可能性は低いです。したがって、クエリする列で結合インデックスを使用でき、クエリする列を結合インデックスを通じて取得できる場合、たとえば、結合インデックスが配置されている列のみ、または左から始まる列の一部のみをクエリする場合、これはカバーリング インデックスと同等です。通常、クエリがカバーリング インデックスを使用できるようにするには、クエリ対象のデータの複数の列を結合インデックスとして設定します。

要約する

MySQL カバーリングインデックスの使用に関するこの記事はこれで終わりです。MySQL カバーリングインデックスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLはカバーインデックスを使用してテーブルリターンを回避し、クエリを最適化します。
  • MySQLのカバーインデックスに関する知識ポイントのまとめ
  • インデックスとテーブルリターンをカバーするMySQLの使い方
  • MySQLカバーインデックスの詳しい説明
  • MySQL パフォーマンス最適化の事例 - インデックス共有のカバー
  • MySQL パフォーマンス最適化のケーススタディ - インデックスと SQL_NO_CACHE をカバー
  • MySQLカバーインデックスの利点

<<:  Kylin V10 サーバーで Storm をコンパイルしてインストールする詳細なプロセス

>>:  tdが空の場合に境界線を表示する方法

推薦する

Linux で crond ツールを使用してスケジュールされたタスクを作成する方法

序文Crond は Linux のスケジュール実行ツール (Windows のスケジュールされたタス...

MySQL5.7.27-winx64 バージョン win10 のダウンロードとインストールのチュートリアル図

MySQL 5.7 のインストール私たちは学校で MySQL データベースを学んでいます。先生は私た...

Linux で特定のユーザーにフォルダーのすべてのコンテンツを許可するにはどうすればよいですか?

【問題分析】 chown コマンドを使用できます。ここで ch は change (変更) を表し...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

カルーセル効果を実現するネイティブJavaScript

この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

Docker で Docker0 ブリッジのデフォルトのネットワーク セグメントを変更する方法

1. 背景Docker サービスが開始されると、デフォルトで docker0 ブリッジが作成され (...

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

Linux サービスでファイアウォールを有効にする 2 つの方法

方法は2つあります: 1. サービス方法ファイアウォールのステータスを確認します。 [root@ce...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

ドロップダウンメニューを実現するためのHTML+CSS

1. ドロップダウンリストの例コードは次のとおりです。 <!doctypehtml> ...

ダウンロードにおすすめの氷と雪のフォント 33 種類 (個人用および商用)

01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...

htmlはハイパーリンク付きの新しいウィンドウを開き、ウィンドウのプロパティを制御できます。

1. HTMLハイパーリンクによって開かれるウィンドウのサイズコードをコピーコードは次のとおりです...

スライド階段効果を実現するjQuery

この記事では、階段スライド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

Alibaba Cloud Centos 7.5 に MySQL をインストールするチュートリアル

CentOS 7 の yum ソースには、MySQL を正常にインストールするための mysql-s...

各グループの最新データを取得するためにMySQLベースのグループを実装する

序文:グループ化関数はグループ内の最初のデータを取得しますが、各グループ内の最新のデータを取得する必...