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

推薦する

Dockerを使用して外部からアクセス可能なMySQLを構築する詳細な説明

MySQL 8.0をインストールする docker run -p 63306:3306 -e MYS...

CSS を使用して複数の方法で下揃えを実装するサンプル コード

会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。 効果の説明: 1. 赤い...

Idea の起動速度を改善し、Tomcat ログの文字化けを解決する方法

目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...

Vueコンポーネント化の基本的な使用方法の詳細

目次1. コンポーネント化とは何ですか? 2. 基本的な使い方序文:場合によっては、HTML 構造化...

Nginx操作応答ヘッダー情報の実装

前提条件: ヘッダー情報操作をサポートするには、ngx_http_headers_module モジ...

Windows プラットフォーム構成 5.7 バージョン + MySQL データベース サービス

ルートユーザーのパスワードを初期化するプロセスと、よくある2つの問題の解決策が含まれています。 1....

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

Docker で Rancher をデプロイする方法 (落とし穴なし)

操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...

Node.js パッケージ マネージャー npm の具体的な使用方法

目次目的npm init および package.json ファイルモジュールのインストールと管理モ...

CentOS 7 で MySQL 5.7.23 をアップグレードする際の落とし穴と解決策

序文最近、CentOS 7 で MySQL 5.7.23 をアップグレードする際に落とし穴を発見しま...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

Vue3はサイドナビゲーションテキストスケルトン効果コンポーネントをカプセル化します

Vue3プロジェクトのカプセル化サイドナビゲーションテキストスケルトン効果コンポーネント-グローバル...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

この記事は、Dockerにおけるcgroupの具体的な使用法を徹底的に理解するのに役立ちます。

目次cgroupとはcgroupの構成cgroupが提供する機能cgroup 内の CPU を制限す...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...