p3c 多表查询禁止超过三个join有什么依据吗?

0vvn1miw  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(35)

规约原文

【强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引。

问题描述

以下有五张表:总表、人员表、地点表、入职表、离职表。
| 人员ID | 地点ID | 入职ID | 离职ID |
| ------------ | ------------ | ------------ | ------------ |
| 1 | 2 | 3 | 4 |

人员ID姓名
1张三
地点ID办公地点
2北京
入职ID物品名称
3协议
离职ID物品名称
4工牌

要实现查询出以下结果,不就需要join四次吗?

姓名办公地点入职物品离职物品
张三北京协议工牌

修改建议

强制的规约,增加原因说明。

t2a7ltrp

t2a7ltrp1#

可以分成两次和三次join
不要一步到位
因为
A: 10条
B: 11条
笛卡尔积 110条,在系统内部如果索引建立不好,5个表的累加join,风险很大!

i7uq4tfw

i7uq4tfw2#

@kongde7 兄弟,你不要太较真了。他们是互联网公司,数据量很大,注重的是性能。肯定会比较纠结多表join的问题。你不要教条主义地遵守他们的规范。应该视自己项目的实际情况而定,你列出的案例完全可以全部join查出来。再比如RBAC的角色-权限数据模型,往往有五张表。我认为完全可以全部join查出来。

相关问题