在我正在进行的项目中,我们有一个活动表,每个活动都可以链接到大约 20 个不同的“活动详细信息”表中的一个......
例如,如果活动是“工作”类型,那么它将有一个相应的activity_details_工作记录,如果它是“病假”类型,那么它将有一个相应的activity_details_病假记录等等。
目前我们正在加载活动,然后对于每个活动,我们有一个单独的查询来从相关表中获取活动详细信息。如果您有数千个活动,这显然不能很好地扩展。
所以我最初的想法是有一个查询,它可以一次性获取活动并加入详细信息,例如
SELECT * FROM activity
LEFT JOIN activity_details_1_work ON ...
LEFT JOIN activity_details_2_sickleave ON ...
LEFT JOIN activity_details_3_travelwork ON ...
...etc...
LEFT JOIN activity_details_20_yearleave ON ...
但这将导致每条记录都有 100 个字段,其中大部分是空的,感觉很糟糕。
延迟加载细节也不是一个真正的选择,因为在核心逻辑中几乎总是要求细节,至少对于主要类型是这样。
有没有我没想到的超级聪明的方法?
提前致谢