题目引见
竖立数据库的索引,能够挑选单列索引,也能够挑选竖立组合索引。
碰到以下这类状况,用户表(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中两表关联的衔接表怎样竖立索引图文详解的细致内容,更多请关注ki4网别的相干文章!