这条SQL如何写运行时间最短?
我有两个表 A ,B。其中A 表积累了大约1万多条记录,并且每天最少还有几十条记录生成 。根据业务需要,B表每天从A 表和其他表采集数据。我的问题是,我要把A表中已经被B 表采集过的记录屏蔽,而仅仅显示尚未被采集过的记录。
我知道可以这样写:
SELECT A.a ,A.b,A.c ...FROM A
WHERE A.a NOT IN (SELECT B.a FROM B )
AND <WHERE TJ>;
或者:
SELECT A.a ,A.b,A.c ...FROM A ,B
WHERE A.a =B.a(+) AND B.a IS NULL
AND <WHERE TJ>;
但经实践检验,速度都很慢。至少要等待3、4分钟。不知有什么更好的办法提高速度?
欢迎讨论。