Have you considered trying into with only one full outer join? because you're potentially reading each row of each table twice
A small anonymous data sample of your issue could help in verifying this