パフォーマンスの観点から、クエリは問題ないように見えます。本当に問題があるかどうかを確認するために測定しましたか?
(object1_id, object2_id)
の場合 が一意である場合は、次のようにクエリをより簡潔に記述できます。
SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(*) = 6
6
に注意してください 提供されたIDの数です。異なる数のIDが提供されている場合は、これを変更する必要があります。お父さんの実際のパフォーマンスを測定して、速度が上がるかどうかを確認する必要があります。
一意性を想定できない場合は、これでうまくいくはずです:
SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(DISTINCT object2_id) = 6
ただし、最も重要なことは、適切なインデックスがあることを確認することです。 あなたのテーブルに!これは遠い どちらのクエリを作成するかよりも重要です。