表结构: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加入的数据集是由这个查询创建的?