【发布时间】:2015-10-04 11:30:09
【问题描述】:
我正在尝试使用以下 SQL 查询(在 SAS 中)从 pool1 中查找 pool2 中不存在的任何记录。 Pool1 有 11,000,000 条记录,pool2 有 700,000 条记录。这是我遇到问题的地方。我让查询运行了 16 个小时,但离完成还差得很远。有没有更有效的方法(在 SQL 或 SAS 中)来实现我需要做的事情?
PROC SQL;
CREATE TABLE ALL AS
SELECT A.ID
FROM POOL1 A
WHERE NOT EXISTS (SELECT B.ID
FROM POOL2 B
WHERE B.ID = A.ID);
QUIT;
【问题讨论】:
-
所以查询应该返回 10,300,000 条记录?
-
@Matt 。 . .不,这些将进入表格
all。 -
重复表A怎么样,然后从表A中删除表B中存在的记录。
-
在完美的 (SQL) 世界中,a.id 和 b.id 将是(主)键。 SAS 没有键,因此您必须通过在 a.id 和 b.id 上添加(唯一?)索引来模拟它们。
-
不需要索引。请参阅下面的@Steve Matthews 答案。
标签: sql sas not-exists