この記事では、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 サイトにリダイレクトしてください」の解決方法の詳細な説明
方法1: MySQL では、次のコマンド ラインで MySQL サーバーを起動することにより、アクセ...
ここ数年、Web デザインには「全幅背景と固定幅コンテンツ」というトレンドが生まれています。このデザ...
echartsワードクラウドはechartsの拡張版ですhttps://echarts.apache...
この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...
目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...
類似の構造:コードをコピーコードは次のとおりです。 <div></div>&...
目次序文範囲1. スコープとは何ですか? 2. [[スコープ]] プロパティ3. スコープチェーン4...
1. 準備1.1 service.bat を含む tomcat 圧縮パッケージをダウンロードします。...
文法以下は、MySQL テーブルにデータを挿入するための INSERT INTO コマンドの一般的な...
vue2 プロジェクト開発の経験があれば、$refs に精通しているでしょう。 vue3 の急激なア...
目次Centosイメージを取得するCentos ベースの nginx コンテナを生成するCentos...
目次1. シーンの読み込み2. ノードを見つける1. ノード検索2. その他のノード操作3. 再生ア...
目次まとめ環境とツールの準備サーバー仮想化のインストール VMware ESXi仮想マシンのオペレー...
手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...
1. Docker とは何ですか? (1)DockerはLinuxコンテナ内でアプリケーションを実行...