W takim przypadku możliwe jest zastosowanie distinct
przed join
prawdopodobnie zwiększając jego wydajność:
select fb.*
from
formulation_batch fb
inner join
(
select distinct formulationbatch_id
from formulation_batch_component
where component_id in (1, 2)
) fbc on fb.id = fbc.formulationbatch_id
where fb.project_id = 1
Zwróć uwagę, jak używać aliasów dla nazw tabel, aby zapytanie było bardziej przejrzyste. Również wtedy in
operator jest bardzo poręczny. Używanie podwójnych cudzysłowów z tymi identyfikatorami nie jest konieczne.