图文详解MySQL中两表关联的连接表如何创建索引
发布时间 - 2026-01-11 01:09:28 点击率:次本文介绍了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适用与通过部门查询出该部门下所属的人员。
其它
测试数据
Test.sql
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# mysql
# 多表关联
# 索引
# 表关联
# 创建联合索引
# 一文弄懂MySQL索引创建原则
# MySQL创建高性能索引的全步骤
# MySQL创建索引需要了解的
# MySQL 索引的优缺点以及创建索引的准则
# MySQL字符串索引更合理的创建规则讨论
# MySQL使用命令创建、删除、查询索引的介绍
# 怎样正确创建MySQL索引的方法详解
# MySql索引和索引创建策略
# 可以选择
# 四种
# 相关内容
# 在这个
# 来看看
# 这种情况
# 该如何
# 所示
# 这篇文章
# 谢谢大家
# 最优
# 如下图
# 测试数据
# 该部
# 有疑问
# idx_dept
# idx_user_dept
# idx_user
# user_uuid
# org_dept
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS中将个别页面强制横屏其他页面竖屏
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel如何升级到最新版本?(升级指南和步骤)
如何在腾讯云免费申请建站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
浅述节点的创建及常见功能的实现
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Laravel API资源类怎么用_Laravel API Resource数据转换
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
php485函数参数是什么意思_php485各参数详细说明【介绍】
免费视频制作网站,更新又快又好的免费电影网站?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
打造顶配客厅影院,这份100寸电视推荐名单请查收
php结合redis实现高并发下的抢购、秒杀功能的实例
如何用好域名打造高点击率的自主建站?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何快速搭建高效WAP手机网站?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
微信小程序 五星评分(包括半颗星评分)实例代码
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
再谈Python中的字符串与字符编码(推荐)
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel集合Collection怎么用_Laravel集合常用函数详解
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
无锡营销型网站制作公司,无锡网选车牌流程?
Python面向对象测试方法_mock解析【教程】
Laravel如何实现事件和监听器?(Event & Listener实战)
如何打造高效商业网站?建站目的决定转化率
Laravel怎么调用外部API_Laravel Http Client客户端使用
如何在云主机上快速搭建多站点网站?
微信推文制作网站有哪些,怎么做微信推文,急?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
香港网站服务器数量如何影响SEO优化效果?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
如何基于云服务器快速搭建个人网站?
黑客如何通过漏洞一步步攻陷网站服务器?
微信公众帐号开发教程之图文消息全攻略
如何用免费手机建站系统零基础打造专业网站?
,南京靠谱的征婚网站?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel怎么上传文件_Laravel图片上传及存储配置
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道

