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

2023-12-12 890 views
1
规约原文

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

问题描述
以下有五张表:总表、人员表、地点表、入职表、离职表。 人员ID 地点ID 入职ID 离职ID
1 2 3 4
人员ID 姓名
1 张三
地点ID 办公地点
2 北京
入职ID 物品名称
3 协议
离职ID 物品名称
4 工牌
要实现查询出以下结果,不就需要join四次吗? 姓名 办公地点 入职物品 离职物品
张三 北京 协议 工牌
修改建议

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

回答

6

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

7

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