この記事では、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 サイトにリダイレクトしてください」の解決方法の詳細な説明
優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...
日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...
MySQL のデータはディスクに書き込む必要があることは誰もが知っています。ディスクの読み取りと書き...
オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...
1. 前の章では、プログラムを yum リポジトリに直接インストールできることを学びましたが、そのた...
Dockerは参考までにMySQLバージョン8.0.20をインストールします。具体的な内容は以下のと...
この間、私は docker を勉強していたのですが、nginx をデプロイするときに行き詰まりました...
一般的な演算子と JavaScript の演算子の概要カテゴリオペレーター算術演算子+、–、*、/、...
Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP ...
1. MySQL 5.7 のアンインストール1.1查看yum是否安裝過mysql CD yum li...
インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...
序文hover疑似クラスが要素に境界線を追加すると、要素内のコンテンツがずれることがあります。box...
この記事では、例を使用して、MySQL の水平テーブルと垂直テーブル間の変換操作を実装する方法を説明...
<br />jb51.net では、常に記事のセマンティクスを重視してきましたが、HTM...
目次序文シナリオシミュレーション要約する序文最近、sql_mode の話題については何度も話し合われ...