概述

今天主要介绍一下MySQL中两表关联的连接表是如何创建索引的相关内容,下面来看看详细的介绍。

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方式

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";

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

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

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

01

人员查所属部门用and方式

1.1 关联表无索引

1.2 单索引 Idx_dept

1.3 单索引 Idx_user

1.4 组合索引 Idx_dept_user

1.5 组合索引 Idx_user_dept

1.6 所有都建立上

02

人员查所属部门用join方式

2.1 关联表无索引

2.2 单索引 Idx_dept

2.3 单索引 Idx_user

2.4 组合索引 Idx_dept_user

2.5 组合索引 Idx_user_dept

2.6 所有都建立上

03

部门查人员用and方式

3.1 关联表无索引

3.2 单索引 Idx_dept

3.3 单索引 Idx_user

3.4 组合索引 Idx_dept_user

3.5 组合索引 Idx_user_dept

3.6 所有都建立上

04

部门查所属人员用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 join 组合索引_详解MySQL两表关联的连接表创建单列索引还是组合索引最优...相关推荐

  1. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  2. mysql通配符escape使用_详解MySQL like如何查询包含'%'的字段(ESCAPE用法)

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  3. mysql通配符escape使用_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)-MySQL教程-Web开发者网...

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  4. mysql mgr 三节点_详解MySQL 5.7 MGR单主确定主节点方法

    我们行MGR年底要上线了,每天都要看官方文档学习,做测试,坚持每天写一个小知识点,有想一起学习的么~ MySQL 5.7 MGR单主确定主节点是哪个,我们可以通过成员ID来判断,然后结合read_on ...

  5. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

  6. mysql 的dcl语句_详解MySQL第三篇—DCL语句

    DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...

  7. mysql字段的区分度_详解MySQL索引长度和区分度之间的平衡,值得收藏

    概述 前面我们讲了怎么去计算索引所占用的长度?那么换个方式想?索引又应该设置多少长度比较合理呢? 区分度与索引长度的权衡 首先索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度 ...

  8. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

  9. mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数

    前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写.对机器来说易于解析和生成,并且会减少网络带宽的传输. JSON的格式非常简单:名称/ ...

最新文章

  1. [svc]gns3模拟器及探讨几个bgp问题
  2. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(一)
  3. Mac git 终端使用
  4. C语言实用算法系列之DOS传参“加减乘除计算器”
  5. java继承静态方法,是否在Java中继承了静态方法?
  6. UNIX高级环境编程 第3章 文件IO
  7. Scala安装教程(最详细教程)
  8. 程序员数学(23)–图形的旋转与中心对称
  9. 计算机d盘hlddz是啥,hlddzsdk.exe是什么进程?
  10. MySQL优化系列16-优化MySQL的锁
  11. 优雅的二维数组循环赋值
  12. 机器学习之密度聚类及代码示例
  13. 涉密计算机系统分级保护,计算机信息系统分级保护方案.pdf
  14. SQL使用模糊查询like ‘%ABC‘ 和 like ‘%ABC%‘ 的优化
  15. 大数据架构师需要具备哪些能力?
  16. 致初心,迎未来!TOM邮箱21周年,初心未改
  17. 福利贴:亲朋好友赶快来 凯福德金业让我赚大发啦!!!(推荐礼)
  18. 通过微软商店软件安装kali Linux子系统及图形界面
  19. S3C2440逻辑程序--从点灯开始
  20. Crack:GoJS 2.2.18 -2022-09-08 update

热门文章

  1. 多线程下C#如何保证线程安全?
  2. SQL语句 SELECT LIKE用法详解
  3. Mybatis 动态sql语句(if标签和where标签)
  4. 编译安装php的openssl组件时遇到 libssl not found解决办法
  5. Mysql翻转字符串reverse
  6. php mongodb _id,PHP库 查询Mongodb中的文档ID的方法
  7. java输入hello_详解JAVA输出Hello World
  8. aspx repeater 用法_ASP.NET - Repeater 控件
  9. python简单小游戏代码_一个简单的python小游戏---七彩同心圆
  10. llvm编译器实战教程第二版_LLVM编译器实战教程