我正在使用以下查询来检索一组订单:
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)
上面的查询花费了很多时间,并且一直在运行。我可以对查询做些什么以使其快速执行吗?还是我需要先执行第一个查询,然后通过拍摄另一个查询根据条件进行过滤?