この記事では、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 サイトにリダイレクトしてください」の解決方法の詳細な説明
効果: アイデア:入力タイプ属性を使用して、タイプ値がテキストの場合はパスワードを表示し、タイプ値が...
Ubuntu 20.04はnetplanを通じてネットワークを管理するため、以前のバージョンとは少...
公式ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/...
最近Nginxを構築しているのですが、ドメイン名でアクセスできません。 nginx 構成ファイル n...
目次JavaScript のプライベート クラス フィールドとプライバシーの必要性JavaScrip...
opencv2 の簡単なインストール: conda インストール --channel https:/...
目次安定スロットリング要約する安定自動ドアは人を感知してドアを開け、5 秒間のカウントダウンを開始し...
今日は IE8 ベータ 1 (以下、IE8 と略します) をチラ見しました。IE8 は素晴らしい体験...
目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...
序文プロジェクトの要件は、ユーザーの現在の位置が特定の地理的位置範囲内にあるかどうかを判断することで...
この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...
一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...
目次設計シナリオ技術的なポイントサーバー情報準備フルバックアップスクリプト(Mysql-FullyB...
Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...
必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...