sql >> データベース >  >> RDS >> Oracle

構成テーブルで交差を行う方法

    パフォーマンスの観点から、クエリは問題ないように見えます。本当に問題があるかどうかを確認するために測定しましたか?

    (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
    

    ただし、最も重要なことは、適切なインデックスがあることを確認することです。 あなたのテーブルに!これは遠い どちらのクエリを作成するかよりも重要です。



    1. UPDATEステートメントがREFERENCE制約と競合していました-SQLServer/TSQLチュートリアルパート76

    2. SQLランクパーセンタイル

    3. 外部キー制限がある2つのテーブルの行を更新する方法

    4. 特定の値の組み合わせを見つける