簡體   English   中英

SQL左外部聯接與嵌套選擇優化

[英]SQL left outer join with nested select optimisation

我正在查詢SQL Server 2012。

我在大型結果集中有一個左外部聯接,如下所示:

Data
LEFT OUTER JOIN
(
    SELECT
        MemberID
        ,MIN(Date)
    FROM
        Tables
    GROUP BY
        MemberID
) T
ON Data.MemberID = T.MemberID

其中Data已經是一個大型查詢(返回了成千上萬的行)。

我的問題是:此嵌套選擇查詢是否僅針對“數據”中已有的MemberID進行評估? 這似乎大大降低了存儲過程的速度,是否有更標准的方法? 還是這只是意料之中的?

提前致謝。

否,將為所有行評估子查詢。

如果您想在第一行進行操作,請執行以下操作:

row_number() over (partition by Memberid order by Date) as seqnum

然后使用:

where seqnum = 1

最后,我使用Gordon Linoffs方法選擇第一行,然后在嵌套的select語句中將“ Left Outer Join”更改為帶有WHERE條件的外部Apply。

Data.MemberID = Tables.MemberID

這大大提高了速度。 請注意,原始問題的查詢版本大大簡化,因此該解決方案可能並非在所有情況下都適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM