この記事では、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 サイトにリダイレクトしてください」の解決方法の詳細な説明
!DOCTYPE HTML ドキュメントが準拠するドキュメント型定義 (DTD) を指定します。 ...
序文アプリケーションのバグや DBA の誤操作が発生した場合、テーブル全体が更新される可能性がありま...
MySQL マルチテーブルクエリ (直積原理)まず、データが使用するテーブルを決定します。デカルト...
1. openssh-serverをインストールする yum インストール -y openssl o...
この記事では、MySQL 5.7.21 のインストールと設定方法を記録し、皆様と共有します。 1. ...
序文docker イメージを削除できません。docker docker imagesを確認すると、イ...
序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...
目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...
1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...
目次DMLステートメント1. レコードを挿入する2. 記録を更新する3. シンプルなクエリレコード4...
この記事の例では、テーブルを動的に生成したり行を削除したりするためのJavaScriptの具体的なコ...
序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...
序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...
インターフェイス ドメイン名を構成する際、各パブリック プラットフォームはドメイン名に対する開発者の...
目次1. beforeunload イベント2. アンロードイベント3. ソースコードプロジェクトの...