一連の注文を取得するために次のクエリを使用しています。
select count(distinct po.orderid)
from PostOrders po,
ProcessedOrders pro
where pro.state IN ('PENDING','COMPLETED')
and po.comp_code in (3,4)
and pro.orderid = po.orderid
クエリは 4323 という結果を返しますが、これは十分に高速です。
ただし、クエリに追加の条件を追加する別のテーブル DiscarderOrders に存在しない場合にのみ返されるように、別の条件を設定する必要があります。
select count(distinct po.orderid)
from PostOrders po,
ProcessedOrders pro
where pro.state IN ('PENDING','COMPLETED')
and po.comp_code in (3,4)
and pro.orderid = po.orderid
and po.orderid not in (select do.order_id from DiscardedOrders do)
上記のクエリは多くの時間を要し、実行を続けます。クエリを高速に実行するためにできることはありますか? または、最初のクエリを最初に実行してから、別のクエリを実行して条件に基づいてフィルタリングする必要がありますか?