|
第三条sql不可能是等价的
SELECT PAY_NO, PROJECT_NAME
FROM A
WHERE A.PAY_NO NOT IN (SELECT PAY_
NO FROM B WHERE VALUE >=120000);
---- 但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间:
SELECT PAY_NO,PROJECT_NAME
FROM A,B
WHERE A.PAY_NO=B.PAY_NO(+)
AND B.PAY_NO IS NULL
AND B.VALUE >=12000;
我想应该这样写:
SELECT PAY_NO,PROJECT_NAME FROM A,B WHERE A.PAY_NO=B.PAY_NO(+) AND B.PAY_NO IS NULL
union all
select PAY_NO,PROJECT_NAME FROM A,B WHERE A.PAY_NO=B.PAY_NO and b.value<120000 |
|