表結構:TSQL加入,查詢處理順序和存儲
CREATE TABLE dbo.Transactions
(
actid INT NOT NULL, --Account ID
tranid INT NOT NULL, -- Transaction ID
val MONEY NOT NULL, --- Transaction value
CONSTRAINT PK_Transactions PRIMARY KEY(actid, tranid)
);
以下低效的查詢試圖確定每次交易後運行平衡
SELECT
T1.actid, T1.tranid, T1.val,
SUM(T2.val) AS balance
FROM
dbo.Transactions AS T1
JOIN
dbo.Transactions AS T2 ON T2.actid = T1.actid
AND T2.tranid <= T1.tranid
GROUP BY
T1.actid, T1.tranid, T1.val;
我不知道如何加入被處理在查詢中。是否將聯接視爲子查詢,其中每個組(T1.actid, T1.tranid, T1.val
)都會執行聯接語句?這是否意味着如果有10K Transactions,10K加入的數據集是由這個查詢創建的?