delete from SERV
where not exists
( select * from EXTEND_TICKET_000002 where SERV.ACC_NBR=EXTEND_TICKET_000002.CALLING_NBR)
SERV 表有35万条
EXTEND_TICKET_000002 有17万条
执行后1晚上都出不来结果,最后ORACLE报错
delete from SERV
where not exists
( select * from EXTEND_TICKET_000002 where SERV.ACC_NBR=EXTEND_TICKET_000002.CALLING_NBR)
存在性检测本身不会慢,关键是你子查询的写法.
你的需求是:
删除SERV 表中SERV.ACC_NBR的值,不存在于EXTEND_TICKET_000002.CALLING_NBR中的记录,对吧?
如果是这样,anzi_oracle 这样的写法是可行的.
还有,如下SQL速度也会更快点:
delete from SERV A
whereA.CALLING_NBR NOT in
( select ACC_NBR from EXTEND_TICKET_000002
whereACC_NBR=a.CALLING_NBR
)