加入内部位置与外部位置



两个语句会返回相同的结果吗?

顶部代码在 WHERE 子句中包含 JOIN,需要 4 个多小时才能运行。通过将 JOIN 移到 WHERE 之外,相同的查询在 1m 6s 内运行。我没有在 WHERE 子句中看到 JOIN。

注意:DSA.doc_id 是 orders.folder 的子版本记录。

    --OLD CODE TAKING 4+ HRS TO RUN
    SELECT top 1 status_to_date
    FROM DSA
    WHERE (status_to = 'CA') 
    and left(DSA.doc_id,12) = orders.folder 

    --NEW CODE TAKING LESS THAN A MINUTE
    SELECT top 1 status_to_date
    FROM DSA
    left outer join orders 
        on left(DSA.doc_id,12) = orders.folder 
    WHERE (status_to = 'CA')

是的,我相信这两个查询都会给出相同的结果。 在连接给出最慢结果的一侧。但是上面查询还有一个替代方法,它将比第二个查询更快

Select 
     Top (1) status_to_date
 FROM 
    DSA
 WHERE 
    (status_to = 'CA')
    AND  (Select count(*) From orders where orders.folder =  left(DSA.doc_id,12)) > 0

最新更新