tenho tabelas assim
# Things
id
user_id
# ThingUser
id
thing_id
user_id
Eu quero selecionar todas as coisas onde user_id=123 OU está relacionado ao usuário 123 por meio de ThingUser.
Acho que talvez eu esteja perto de algo assim:
select * from things
left outer join thing_users on things.id=thing_users.thing_id and thing_users.user_id = 123
where
things.user_id = 123 OR
thing_users.id IS NOT NULL
Mas no meu conjunto de dados muito grande, isso trava por vários segundos e depois o encerro.
Concluí que a única/mais adequada forma de conseguir isso é simplesmente com uma UNIÃO. Essas duas consultas unidas:
1) Use o ambiente de teste se você tiver um
2) Altere sua consulta para retornar um tamanho de amostra menor para ver se é isso que você está procurando: