ホームページ >データベース >mysql チュートリアル >MySQL の 2 つのテーブルに関連する結合テーブルのインデックスを作成する方法の詳細な図とテキストの説明

MySQL の 2 つのテーブルに関連する結合テーブルのインデックスを作成する方法の詳細な図とテキストの説明

小云云
小云云オリジナル
2018-01-13 16:26:055869ブラウズ

この記事では、MySQL の 2 つのテーブルに関連する接続テーブルのインデックスを作成する方法に関する関連情報を写真とテキストで紹介します。この記事の紹介は、すべての人にとって確かな参考と学習価値があります。必要なので、見に来てください。

問題の概要

データベースのインデックスを作成するには、単一列インデックスを選択するか、結合インデックスを作成できます。

次の図に示すように、ユーザー テーブル (user) と部門テーブル (dept) が部門ユーザー関連付けテーブル (deptuser) を介して接続されている状況が発生しました。問題は、この「関連テーブルにインデックスを作成するには?」です。

このテーブルには、次の 4 つのオプションがあります:

user_uuid の単一列インデックス idx_user を構築する

    user_dept の単一列インデックス idx_dept を構築する
  • 結合インデックス idx_user_dept を構築するis (user_uuid, dept_uuid)
  • 結合インデックス idx_dept_user、つまり (dept_uuid, user_uuid) を作成します
  • 関連テーブルをクエリするには 4 つの状況があります:

    -- 一、人员查所属部门用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";
    -- 二、人员查所属部门用join方式
    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";
    -- 三、部门查人员用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";
    -- 四、部门查所属人员用join方式
    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 ined インデックス Idx_dept_user


1.5 結合インデックス Idx_user_dept


1.6 すべてが作成されます


2. 結合メソッドを使用して、担当者が所属する部門を確認します

2.1 関連付けられたテーブルにはインデックスがありません

2.2 単一インデックス Idx_dept

2.3 単一インデックス Idx _user


2.4 結合インデックス Idx_dept_user

2.5 結合インデックス I dx_user_dept


2.6 すべては

で作成されます

3. 部門の担当者が使用する方法と方法をチェックする

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 ined インデックス Idx_user_dept


4.6 すべては


に基づいて構築されています

結論

上記の実際のテスト結果から、次の結論を導き出すことができます。この関連付けテーブルでは、user_uuid と dept_uuid に対してそれぞれ単一列インデックス idx_user と idx_dept を確立するのが最適です。

インデックス idx_user は、人事 ID を介して個人の部門を照会するのに適しており、インデックス idx_dept は、部門を介して部門の下の担当者を照会するのに適しています。

関連する推奨事項:

集計関数の組み合わせ使用を分析し、テーブルを結合する_MySQL

mysqlを使用して、2つのテーブル間に関連する更新を実装する_MySQL

MySQLのテーブルパーティショニングの詳細な紹介

以上がMySQL の 2 つのテーブルに関連する結合テーブルのインデックスを作成する方法の詳細な図とテキストの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。