MySQL 重複インデックスと冗長インデックスの例の分析

MySQL 重複インデックスと冗長インデックスの例の分析

この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参考までに、詳細は以下の通りです。

重複インデックス: 1 つの列または複数の列に同じ順序で作成された複数のインデックスを指します。

冗長インデックス: 2つのインデックスでカバーされる列が重複している

冗長インデックスは、一部の特殊なシナリオでインデックス カバレッジを使用するため、より高速になります。

シナリオ

例えば、記事とタグのテーブル

+——+——-+——+
| id | アートid | タグ |
+——+——-+——+
| 1 | 1 | PHP |
| 2 | 1 | Linux |
| 3 | 2 | MySQl |
| 4 | 2 | オラクル |
+——+——-+——+

実際の使用では、クエリには2つの種類があります

  • artid - クエリ記事 - タグ
  • タグ—クエリ記事—artid

SQL ステートメント:

artid=2 の t11 からタグを選択します。
tag='PHP' の場合、t11 から artid を選択します。

冗長インデックスを作成してインデックス カバレッジを実現し、クエリの効率を向上させることができます。

1. 記事タグテーブルを作成する

このテーブルには 2 つのインデックスがあります。1 つは at、もう 1 つは ta です。両方のインデックスは artid フィールドと tag フィールドを使用します。

テーブル `t16` を作成します (
 `id` int(10) 符号なし NOT NULL AUTO_INCREMENT,
 `artid` int(10) unsigned NOT NULL DEFAULT '0',
 `tag` char(20) NOT NULL デフォルト ''
 主キー (`id`)、
 キー `at` (`artid`,`tag`),
 キー `ta` (`tag`,`artid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 デフォルト CHARSET=utf8

2. 2つのSQL文をテストする

tag='PHP' の場合、t11 から artid を選択します。

このステートメントのクエリ分析の Extra には、Using index が含まれています。これは、ここでインデックス カバレッジが使用されていることを意味します。インデックス カバレッジを使用した後は、クエリ データに行を返す必要がないため、クエリ効率は比較的高くなります。

這里寫圖片描述

artid = 1 の t11 からタグを選択します。

このステートメントのクエリ分析の Extra には、Using index が含まれています。これは、ここでインデックス カバレッジが使用されていることを意味します。インデックス カバレッジを使用した後は、クエリ データに行を返す必要がないため、クエリ効率は比較的高くなります。

列表內容

インデックスカバレッジの詳細については、前の記事「インデックスカバレッジ」を参照してください。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL インデックス操作スキルの概要」、「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLクエリの冗長インデックスと未使用のインデックス操作
  • MySQL の冗長インデックスと重複インデックスの詳細な説明
  • MySQL における冗長インデックスと重複インデックスの違い

<<:  Windows 10 の仮想マシンに Mac システムをインストールするグラフィック チュートリアル

>>:  WeChatアプレットが計算機機能を実装

推薦する

Flash が HTML div 要素を覆わないようにする方法

今日、フラッシュ広告のコードを書いていたとき、フラッシュに付属するリンクはポップアップ広告と間違われ...

MYSQL フルバックアップ、マスタースレーブレプリケーション、カスケードレプリケーション、および半同期の概要

MySQL フルバックアップ1. バイナリログを有効にし、データベースから分離して別々に保存する v...

よくある CSS エラーと解決策

コードをコピーコードは次のとおりです。 IE6 と FF の違い: background:orang...

NodeJs の高メモリ使用量のトラブルシューティング実戦記録

序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...

MySQL データベースのステートメント ワイルドカード ファジー クエリの概要

MySQL エラー: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0...

サーバー上で Nginx を使用して Springboot プロジェクトをデプロイする方法の詳細なチュートリアル (jar パッケージ)

1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...

グローバルトーストコンポーネントをカプセル化するVueの完全な例

目次序文1. vue-cliを使う1. Toastコンポーネントを定義する2. main.jsで設定...

スペース均等互換性の問題を解決する2つの方法についての簡単な説明

flex は 2009 年のリリース以来、ほぼすべてのブラウザでサポートされています。シンプルでレス...

Linuxの同時実行は簡単です。このようにするだけです

並行処理関数 i の `grep server /etc/hosts | awk '{pri...

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

nginx を使用したプロキシ サーバーの設定

Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...

nofollowタグの使用と分析に関する簡単な説明

nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...

プライベートレジストリ内の画像を照会または取得する方法

Dockerはプライベートレジストリ内のイメージを照会または取得するために、 docker 検索 1...

mysql MDLメタデータロックの詳細な分析

序文: MySQL で SQL 文を実行すると、予想した時間内に文が完了しません。このような場合、通...