簡體   English   中英

自我加入的替代方案

[英]An alternative to self-join

我有一個像這樣引用自己的表:

Id   Total   Prev   Session
1  | 10    | NULL | 1
2  | 15    | 1    | 1
3  | 11    | NULL | 2
4  | 29    | 2    | 1
5  | 19    | 3    | 2
6  | 47    | 4    | 1

我需要了解特定會話的差異。
對於第1場會議,這樣:

1. 10 -- None to 10
2. 5  -- 10 to 15
3. 14 -- 15 to 29
4. 18 -- 29 to 47

為此,我使用:

SELECT  F.Total - P.Total AS Difference
FROM    Foo F LEFT OUTER JOIN
        Foo P ON F.Prev = P.Id
WHERE   Session = @Session

這是非常緩慢的。
如何在不更改表格的情況下更快地檢索這些差異?

你不能。 這是可能的最快查詢,但如果在SessionPrevId上添加索引可能會快得多。

暫無
暫無

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

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