首頁  >  文章  >  資料庫  >  MySQL中兩表關聯的連接表如何建立索引圖文詳解

MySQL中兩表關聯的連接表如何建立索引圖文詳解

小云云
小云云原創
2018-01-13 16:26:055821瀏覽

本文透過圖文向大家介紹了關於MySQL中兩表關聯的連接表如何創建索引的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

問題介紹

建立資料庫的索引,可以選擇單列索引,也可以選擇建立組合索引。

遇到如下這種情況,使用者表(user)與部門表(dept)透過部門使用者關聯表(deptuser)連接起來,如下圖所示:


表間關係

問題就是,該如何在這個關聯表中建立索引?

針對此表,有以下四個選擇:

  • 針對於user_uuid建立單列索引idx_user

  • 針對於user_dept建立單一列索引idx_dept

  • 建立組合索引idx_user_dept,即(user_uuid,dept_uuid)

  • 建立組合索引idx_dept_user,即(dept_uuid,user_uuid)

對關聯表的查詢,有以下四種情況:

-- 一、人员查所属部门用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";

測試驗證

一.人員查所屬部門用and方式

1.1 關聯表無索引


#1.2 單一索引Idx_dept


#1.3 單一索引Idx_user


1.4 組合索引Idx_dept_user


1.5 組合索引Idx_user_dept


1.6 所有都建立上


#二、人員查所屬部門用join方式

2.1 關聯表無索引

2.2 單一索引Idx_dept


2.3 單索引Idx_user

2.4 組合索引Idx_dept_user


##2.5 組合索引Idx_user_dept


2.6 所有都建立上


#三、部門查人員用and方式

3.1 關聯表無索引

3.2 單一索引Idx_dept


3.3 單一索引Idx_user


3.4 組合索引Idx_dept_user


3.5 組合索引Idx_user_dept


#3.6 所有都建立上


四、部門查所屬人員用join方式

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適用與透過部門查詢出該部門下屬的人員。

相關推薦:

分析聚合函數與連接表的組合使用_MySQL

mysql實作兩表關聯更新_MySQL

MySQL中表格分割區的詳細介紹

以上是MySQL中兩表關聯的連接表如何建立索引圖文詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn