• 售前

  • 售后

热门帖子
入门百科

图文详解MySQL中两表关联的毗连表怎样创建索引

[复制链接]
晓晓红青蜓吧 显示全部楼层 发表于 2021-10-25 19:30:56 |阅读模式 打印 上一主题 下一主题
本文先容了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)
对关联表的查询,有如下四种情况:
  1. -- 一、人员查所属部门用and方式
  2. 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";
  3. -- 二、人员查所属部门用join方式
  4. 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";
  5. -- 三、部门查人员用and方式
  6. 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";
  7. -- 四、部门查所属人员用join方式
  8. 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适用与通过部分查询出该部分下所属的人员。
别的
测试数据
Test.sql
总结
以上就是这篇文章的全部内容了,盼望本文的内容对各人的学习大概工作能带来一定的资助,如果有疑问各人可以留言交换,谢谢各人对草根技术分享的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作