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アプレットが計算機機能を実装

推薦する

MySQLはライブラリ内の主キーなしでテーブルインスタンスコードを素早く取得します

概要MySQL データベースで主キーのないテーブルを表示するための SQL ステートメントをいくつか...

MySQL 8.0.21.0 コミュニティ エディションのインストール チュートリアル (詳細な図解)

1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

JavaScript Three.js でテキストを作成する最初の経験

目次効果テキストの作成を開始するまずフォントローダーを作成するフォントライブラリを読み込むテキストジ...

MySQL での or ステートメントの使用例

1. MySQL での or 構文の使用、および MySQL 構文で or を使用する際の注意点。 ...

Redhat 7.3 に MySQL 8.0.22 をインストールするための詳細なチュートリアル (バイナリ インストール)

目次1. MySQLインストールパッケージをダウンロードする2. MySQLのアンインストール手順3...

Vue で HTML 5 ドラッグ アンド ドロップ API を使用する方法

ドラッグ アンド ドロップ API は、ドラッグ可能な要素を HTML に追加し、ドラッグ可能な豊富...

Windows で nginx を素早くインストールし、自動的に起動するように設定する

目次1. Windows システムでの Nginx のインストールと起動プロセス: 2. 起動時にN...

SQL 実装 LeetCode (185. 部門内で最も給与の高い上位 3 名)

[LeetCode] 185. 部門別給与上位3位従業員テーブルにはすべての従業員が保持されます。...

MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)

MySQL チューニング ツールの詳細な説明と実践的な演習の説明 ツールの紹介の説明 分析例の説明...

jQueryはシャトルボックス機能を実現する

この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...

MySQLの水平および垂直テーブルパーティションの説明

前回の記事で、MySQL ステートメントの最適化には限界があると述べました。MySQL ステートメン...

MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明

1. クラスター化インデックステーブル データはインデックスの順序で保存されます。つまり、インデック...

JavaScript クロージャの説明

目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...