规约原文
【强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引。
问题描述
以下有五张表:总表、人员表、地点表、入职表、离职表。
| 人员ID | 地点ID | 入职ID | 离职ID |
| ------------ | ------------ | ------------ | ------------ |
| 1 | 2 | 3 | 4 |
人员ID | 姓名 |
---|---|
1 | 张三 |
地点ID | 办公地点 |
---|---|
2 | 北京 |
入职ID | 物品名称 |
---|---|
3 | 协议 |
离职ID | 物品名称 |
---|---|
4 | 工牌 |
要实现查询出以下结果,不就需要join四次吗?
姓名 | 办公地点 | 入职物品 | 离职物品 |
---|---|---|---|
张三 | 北京 | 协议 | 工牌 |
修改建议
强制的规约,增加原因说明。
2条答案
按热度按时间t2a7ltrp1#
可以分成两次和三次join
不要一步到位
因为
A: 10条
B: 11条
笛卡尔积 110条,在系统内部如果索引建立不好,5个表的累加join,风险很大!
i7uq4tfw2#
@kongde7 兄弟,你不要太较真了。他们是互联网公司,数据量很大,注重的是性能。肯定会比较纠结多表join的问题。你不要教条主义地遵守他们的规范。应该视自己项目的实际情况而定,你列出的案例完全可以全部join查出来。再比如RBAC的角色-权限数据模型,往往有五张表。我认为完全可以全部join查出来。