我们有一个包含 10000 条记录的主表,其中 5000 条记录为status=completed
5000 条记录status=incompleted
。
该应用程序维护不同类别的人......比如说users,visitors,admin
..
访问者非常少(比如 200 条记录)......当他们购买某些东西时appid
,应用程序中的状态会更新为状态 = 已完成。
我们需要appid
那些拥有status!=completed
我知道直接的方式是好的表现..(下一个)
select appid
from application
where status != completed and appid in (select appid from visitors)
appid
还包含在访问者和应用程序中。因为应用程序包含 5000 个已完成和 5000 个未完成
NOT IN (select appid from application where status=completed)
也与IN (select appid from application where status=incompleted)
select v.appid
from visitors v
where v.appid not in (select appid from application where status = completed)
我的第二个查询是否提供与第一个查询相同的性能..
如果NOT IN
执行是这样的..那么它是..
我在下面写声明。
for each v.appid in visitors{
do not select the v.appid if v.appid is in by firing the query as below.
select appid
from application
where appid = v.appid and status = completed
}
第二个查询是否会触发我提到的上述过程...
为了提供与第一个查询相同的更好性能,我可以编写以下内容吗?
select v.appid
from visitors v
where v.appid not in (select appid
from application
where status = completed and appid = v.appid)
如何编写第二个查询以使其执行与第一个查询相同的级别?