;に似たステートメントがあります。
SELECT tableA A, tableB B, tableC C
WHERE a.ID = b.ID and
C.level = '2'
私が実行した場合
SELECT tableA A, tableB B, tableC C
WHERE a.ID = b.ID and
私の結果は33秒で返されます。元のクエリを実行すると、結果は150秒で返されます。なぜC.level = '2'
遅くなるのですか?
Oracleの実行計画を見ると、内部で何が行われているのかがわかります。ただし、要約すると、私の推測では、あなたの論理は次のとおりです。
を追加すること
C.level = '2'
で、より小さなデータセットを取得できるはずです。したがって、より速く返されるはずです。
ただし、データベースエンジンの場合は、データを調べて各レコードをチェックし、より複雑な条件に一致するかどうかを確認する必要があります。これをどのように行うかは、スキーマによって決まります。たとえば、にインデックスがc.level
ある場合、パフォーマンスの違いは無視できる程度になる可能性があります。