首页 > mysql教程 > 正文

MySQL中两表关联的连接表如何创建索引图文详解

原创 2018-01-13 16:26:05 0 292
赞助会员专享特权
本文通过图文给大家介绍了关于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中文网其它相关文章!

  • 相关标签:MySQL 创建 如何
  • 本文原创发布php中文网 ,转载请注明出处,感谢您的尊重!
  • 相关文章


  • Mysql的底层封装
  • MySQL 主键与索引的联系与区别分析_Mysql
  • mysql5.5数据库data目录迁移方法详解_MySQL
  • 理解Mysql prepare预处理语句_MySQL
  • MySQL中两表关联的连接表如何创建索引图文详解
  • 网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
    独孤九贱(5)_ThinkPHP5视频教程

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(4)_PHP视频教程

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(1)_HTML5视频教程

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    相关视频教程

  • javascript初级视频教程 javascript初级视频教程
  • jquery 基础视频教程 jquery 基础视频教程
  • javascript三级联动视频教程 javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程 独孤九贱(6)_jQuery视频教程
  • 相关视频章节