圖文詳解MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引
本文介紹了MySQL中兩表關(guān)聯(lián)的連接表是如何創(chuàng)建索引的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面來看看詳細(xì)的介紹:
問題介紹
創(chuàng)建數(shù)據(jù)庫的索引,可以選擇單列索引,也可以選擇創(chuàng)建組合索引。
遇到如下這種情況,用戶表(user)與部門表(dept)通過部門用戶關(guān)聯(lián)表(deptuser)連接起來,如下圖所示:

表間關(guān)系
問題就是,在這個(gè)關(guān)聯(lián)表中該如何建立索引呢?
針對該表,有如下四種選擇:
- 針對于user_uuid建立單列索引idx_user
- 針對于user_dept建立單列索引idx_dept
- 建立組合索引idx_user_dept,即(user_uuid,dept_uuid)
- 建立組合索引idx_dept_user,即(dept_uuid,user_uuid)
對關(guān)聯(lián)表的查詢,有如下四種情況:
-- 一、人員查所屬部門用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";
測試驗(yàn)證
一.人員查所屬部門用and方式
1.1 關(guān)聯(lián)表無索引

1.2 單索引 Idx_dept

1.3 單索引 Idx_user

1.4 組合索引 Idx_dept_user

1.5 組合索引 Idx_user_dept

1.6 所有都建立上

二 、人員查所屬部門用join方式
2.1 關(guān)聯(lián)表無索引

2.2 單索引 Idx_dept

2.3 單索引 Idx_user

2.4 組合索引 Idx_dept_user

2.5 組合索引 Idx_user_dept

2.6 所有都建立上

三 、部門查人員用and方式
3.1 關(guān)聯(lián)表無索引

3.2 單索引 Idx_dept

3.3 單索引 Idx_user

3.4 組合索引 Idx_dept_user

3.5 組合索引 Idx_user_dept

3.6 所有都建立上

四 、部門查所屬人員用join方式
4.1 關(guān)聯(lián)表無索引

4.2 單索引 Idx_dept

4.3 單索引 Idx_user

4.4 組合索引 Idx_dept_user

4.5 組合索引 Idx_user_dept

4.6 所有都建立上

結(jié)論
通過上面的實(shí)際測試結(jié)果可以得出如下結(jié)論:針對于該關(guān)聯(lián)表分別針對于user_uuid與dept_uuid建立單列索引idx_user,idx_dept最優(yōu)。
其中索引idx_user適用與通過人員ID查詢出該人員所在的部門;索引idx_dept適用與通過部門查詢出該部門下所屬的人員。
其它
測試數(shù)據(jù)
Test.sql
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對本站的支持。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信