[英]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.