MySQL の結合テーブルにインデックスを作成する方法

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を紹介します。参考までに共有します。詳細な紹介を見てみましょう。

問題の紹介

データベース インデックスを作成するときに、単一列インデックスまたは複合インデックスを選択できます。

次の状況では、ユーザー テーブル (user) と部門テーブル (dept) は、次の図に示すように、部門ユーザー関連付けテーブル (deptuser) を介して接続されています。


テーブル間の関係

問題は、この関連テーブルにインデックスを作成する方法です。

このテーブルには 4 つのオプションがあります。

  • user_uuid の単一列インデックス idx_user を作成します。
  • user_dept の単一列インデックス idx_dept を作成します。
  • 複合インデックスidx_user_dept(user_uuid、dept_uuid)を作成します。
  • 複合インデックスidx_dept_user(つまり、(dept_uuid、user_uuid))を作成します。

関連テーブルをクエリする状況は 4 つあります。

-- 1. AND メソッドを使用して、個人が所属する部門を確認します。 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user duser WHERE u.user_uuid=duser.user_uuid AND d.dept_uuid=duser.dept_uuid AND u.user_code="dev1";
-- 2. 結合メソッドを使用して、担当者が所属する部門を確認します。 EXPLAIN SELECT d.dept_name,u.* FROM org_user u LEFT JOIN org_dept_user du ON u.user_uuid=du.user_uuid LEFT JOIN org_dept d ON du.dept_uuid=d.dept_uuid WHERE u.user_code="dev1";
-- 3. AND メソッドを使用して、部門別に人員を確認します。 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user du WHERE u.user_uuid=du.user_uuid AND d.dept_uuid=du.dept_uuid AND d.dept_code="D006";
-- 4. 結合メソッドを使用して、部門内の人員を確認します。 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d LEFT JOIN org_dept_user du ON d.dept_uuid=du.dept_uuid LEFT JOIN org_user u ON u.user_uuid=du.user_uuid WHERE d.dept_code="D006";

テスト検証

1.人事チェック部門と方法

1.1 関連テーブルにインデックスがない


1.2 単一インデックス Idx_dept


1.3 単一インデックス Idx_user


1.4 複合インデックス Idx_dept_user


1.5 複合インデックス Idx_user_dept


1.6 すべて構築済み


2. joinメソッドを使用して、担当者が所属する部門を確認します。

2.1 関連テーブルにインデックスがない

2.2 単一インデックス Idx_dept


2.3 単一インデックス Idx_user

2.4 複合インデックス Idx_dept_user


2.5 複合インデックス Idx_user_dept


2.6 すべてが構築されている


3. 部門はAND方式で人員をチェックする

3.1 関連テーブルにインデックスがない

3.2 単一インデックス Idx_dept


3.3 単一インデックス Idx_user


3.4 複合インデックス Idx_dept_user


3.5 複合インデックス Idx_user_dept


3.6 すべてが構築されている


4. 部門は人員をチェックするために参加する

4.1 関連テーブルにインデックスがない


4.2 単一インデックス Idx_dept


4.3 単一インデックス Idx_user

4.4 複合インデックス Idx_dept_user


4.5 複合インデックス Idx_user_dept


4.6 すべてが構築されている

結論は

上記の実際のテスト結果から、次の結論を導き出すことができます。この関連テーブルでは、user_uuid と dept_uuid に対してそれぞれ単一列のインデックス idx_user と idx_dept を作成するのが最適です。

インデックス idx_user は、個人 ID を通じて個人の部門を照会する場合に適用できます。インデックス idx_dept は、部門を通じて部門下の個人を照会する場合に適用できます。

他の

テストデータ

テスト.sql

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL と Oracle のデータ型の対応 (表形式)
  • MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明
  • MySQL 外部キー制約とテーブル関係の概要
  • Pythonはdict辞書型のデータをMysqlに保存し、テーブルと列を自動的に作成します
  • MySQL と PHP の基礎と応用トピック: データベース テーブルの作成
  • MySQL で 800 万エントリのテスト データ テーブルをすばやく作成する方法
  • MySQLは実際には3つの関係テーブルを作成します

<<:  画像のプリロードと遅延ロードを実装するJavaScript

>>:  Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

推薦する

Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

InnoDB タイプの MySql によるテーブル構造とデータの復元

前提条件: データベースを復元するために必要な .frm ファイルと .ibd ファイルを保存します...

MySQL 5.7.20 Green Edition のインストールの詳細なグラフィックチュートリアル

まず、MySQL とは何かを理解しましょう。 MySQL は、スウェーデンの会社 MySQL AB ...

Docker mongoDB 4.2.1 をインストールし、Springboot ログを収集する詳細な手順

1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...

JavaScript 改ざん防止オブジェクトの使用例

目次JavaScript 改ざん防止オブジェクト1. 拡張不可能なオブジェクト2. 封印された物体3...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

ウェブデザイナー職の面接でよくある質問と回答

1. ASP.NET Web アプリケーションのテンプレートとは何ですか? それらの違いは何ですか?...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

きちんとした標準的なHTMLタグの書き方を学ぶ

優れた HTML コードは美しい Web サイトの基礎となります。私が CSS を教えるときは、まず...

HTML 形式の JSON 出力の例 (テスト インターフェース)

JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...

ins タグと del タグの属性と使用法

insとdel は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、また...

Vue の下部ナビゲーション バー TabBar を実装するための非常に詳細なチュートリアル

目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...

Linux でユーザーを完全に削除する 2 つの方法

Linux 操作実験環境: Centos7 仮想マシンまず、共通ユーザーgubeiqingを作成しま...

Centos8 に nginx をインストールするための詳細なチュートリアル (画像とテキスト)

Nginx (「エンジン エックス」と発音) は、インターネット上の最大規模のサイトの負荷を処理す...