この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を紹介します。参考までに共有します。詳細な紹介を見てみましょう。 問題の紹介 データベース インデックスを作成するときに、単一列インデックスまたは複合インデックスを選択できます。 次の状況では、ユーザー テーブル (user) と部門テーブル (dept) は、次の図に示すように、部門ユーザー関連付けテーブル (deptuser) を介して接続されています。
問題は、この関連テーブルにインデックスを作成する方法です。 このテーブルには 4 つのオプションがあります。
関連テーブルをクエリする状況は 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 をご愛顧いただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: 画像のプリロードと遅延ロードを実装するJavaScript
>>: Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明
ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...
1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...
前提条件: データベースを復元するために必要な .frm ファイルと .ibd ファイルを保存します...
まず、MySQL とは何かを理解しましょう。 MySQL は、スウェーデンの会社 MySQL AB ...
1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...
目次JavaScript 改ざん防止オブジェクト1. 拡張不可能なオブジェクト2. 封印された物体3...
1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...
1. ASP.NET Web アプリケーションのテンプレートとは何ですか? それらの違いは何ですか?...
水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...
優れた HTML コードは美しい Web サイトの基礎となります。私が CSS を教えるときは、まず...
JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...
insとdel は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、また...
目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...
Linux 操作実験環境: Centos7 仮想マシンまず、共通ユーザーgubeiqingを作成しま...
Nginx (「エンジン エックス」と発音) は、インターネット上の最大規模のサイトの負荷を処理す...