我有一个真正的 MySQL 问题,我现在认为没有答案。请帮助我,你是我唯一的希望!
将其简化为基础,我有两个表,“人员”和“活动”。这两个表有可能(长篇故事和大量数据涉及)由两个不同的关系表连接:people_activity 和 entity_activity 我需要对活动表进行查询,该表将人员记录链接到基于活动记录在两个关系表上。
这就是我所拥有的,但是在大量数据上速度非常慢:
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join entityactivity on entityactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid OR
entityactivity.entityid = people.peopleid)
更多注意事项 - 我还尝试创建一个视图来组合两个关系表的结果,而不是通过此视图加入人员和活动。这也有效,但仍然非常缓慢
改变关系的工作方式以整合到一张桌子上是一个令人头疼的问题
我也尝试过像这样的工会-
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid)
union
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (entityactivity.entityid= people.peopleid)
这也有效,但由于其他原因给我带来了问题。我真的需要在一个查询中做到这一点,而不需要改变太多的底层。
有没有人有任何我错过的超级棒的想法??!