今天主要介绍一下关系型数据库中两表关联的连接表是如何创建索引的相关内容,下面来看看详细的介绍。
创建数据库的索引,可以选择单列索引,也可以选择创建组合索引。
假设用户表(用户)与部门表(部门)通过部门用户关联表(deptuser)连接起来,如下图所示:
表间关系
问题就是,在这个关联表中该如何建立索引呢?
针对该表,有如下四种选择:
针对于user_uuid建立单列索引idx _用户针对于用户_部门建立单列索引idx_dept建立组合索引索引文件用户部门,即(用户标识,部门标识)建立组合索引idx _部门_用户,即(部门标识,用户标识)
对关联表的查询,有如下四种情况:
1、人员查所属部门用和方式
解释SELECT d .部门名称,u.* FROM组织部门d,组织用户u,组织部门用户其中u.user_uuid=duser.user_uuid和d.dept_uuid=duser.dept_uuid和u.user _ code=' dev1
2、人员查所属部门用加入方式
解释SELECT d.dept_name,u . * FROM org _ user u LEFT JOIN org _ dept _ user du ON u . user _ uuid=du。user _ uuid在du上左连接org _ dept d。部门标识=d .部门标识其中u.user _ code=' dev1
3、部门查人员用和方式
解释SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user du其中u.user_uuid=du.user_uuid和d .部门标识=du .部门标识和部门代码=' D006
4、部门查所属人员用加入方式
解释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其中部门代码=' D006
1.1 关联表无索引
1.2 单索引Idx_dept
1.3 单索引Idx _用户
1.4 组合索引Idx _部门_用户
1.5 组合索引Idx _用户_部门
1.6 所有都建立上
r>
2.2 单索引 Idx_dept
2.3 单索引 Idx_user
2.4 组合索引 Idx_dept_user
2.5 组合索引 Idx_user_dept
2.6 所有都建立上
3.2 单索引 Idx_dept
3.3 单索引 Idx_user
3.4 组合索引 Idx_dept_user
3.5 组合索引 Idx_user_dept
3.6 所有都建立上
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适用与通过部门查询出该部门下所属的人员。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~