SQL - 不存在包含数百万条记录的查询

时间:2015-07-15 12:15:55

标签: sql sas not-exists

我正在尝试使用以下SQL查询(在SAS中)查找pool1pool2中不存在的Pool1中的任何记录。 pool2有11,000,000条记录,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; 有700,000条记录。这是我遇到问题的地方。我让查询运行了16个小时,它还没有完成。有没有更有效的方法(在SQL或SAS中)来实现我需要做的事情?

var DoThis = function() {
    var x = "hello";   
    alert(x);
}
DoThis = function () {
    var x = "bye";   
    alert(x);
}
DoThis();  //shows the value "bye"

1 个答案:

答案 0 :(得分:3)

PROC SQL;
CREATE TABLE ALL AS
SELECT A.ID
    FROM
        POOL1 A
    WHERE A.ID NOT IN (SELECT B.ID
                        FROM
                            POOL2 B)
                        ;

上述更改应返回相同的结果集,但运行时间要少得多,因为您没有尝试将POOL2连接回POOL1,而只是排除POOL2中存在的结果。

如另一个答案中所述,INDEX可能会有所帮助,但如果ID字段是主键,那么它们可能已经在INDEX中受到影响。