Qua prestaties ziet je query er goed uit. Heb je het gemeten om te zien of er echt een probleem is?
Als (object1_id, object2_id)
uniek is, kunt u de zoekopdracht als volgt beknopter schrijven:
SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(*) = 6
Merk op dat de 6
is het aantal verstrekte ID's. Dit moet worden gewijzigd als een ander aantal ID's wordt verstrekt. Je zou de werkelijke prestaties op je dadta moeten meten om te zien of dit een snelheidsverhoging geeft.
Als je geen uniciteit kunt aannemen, zou dit moeten werken:
SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(DISTINCT object2_id) = 6
Het belangrijkste is echter om ervoor te zorgen dat je de juiste indexen hebt op je tafel! Dit is ver belangrijker dan of je de ene of de andere vraag schrijft.