在我正在开发的项目上,我们有一个活动表,每个活动都可以链接到大约20个不同的“活动细节”表中的一个……
例如如果活动的类型为“work”,那么它将具有相应的activity_details_work记录,如果它是“病假”类型,那么它将具有相应的activity_details_sickleave记录,依此类推.
目前我们正在加载活动,然后对于每个活动,我们都有一个单独的查询来从相关表中获取活动详细信息.如果你有成千上万的活动,这显然不能很好地扩展.
所以我最初的想法是有一个查询来获取活动并一次性加入细节,例如
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个字段,其中大部分都是空的,感觉很讨厌.
延迟加载细节实际上并不是一个选项,因为细节几乎总是在核心逻辑中被请求,至少对于主要类型而言.
有没有一种超级巧妙的方式来做到这一点,我没想到?
提前致谢