CTE 快 Select 从 但插入慢
CTE Fast To Select from but Slow to Insert from
我有一个 CTE,它对数万条记录进行了大量艰苦的工作。
如果我只是 运行 下面的 select 使用 CTE,它会在不到一秒的时间内返回。
但是,如果我在上面添加插入行,大约需要 30 秒!即使 select 只带回 1 或 2 条记录。
我已经用临时表、真实表、变量表试过了,它们都是一样的。
INSERT INTO VIPScoreLog --Fast without this line
SELECT
vs.CustomerId,
vs.VIPScore
FROM CTE_VIPScore vs
LEFT JOIN vw_LatestVIPScores lvs on vs.CustomerId = lvs.CustomerId
WHERE lvs.VIPScore IS NULL
OR lvs.VIPScore <> vs.VIPScore
有什么办法可以消除这 29 秒的延迟吗?
这在 SQL 服务器 2019
感谢 Golden Lion,我尝试用临时表替换 CTE,速度快如闪电。
不确定我明白为什么,但我想我现在已经排序了。
感谢大家的帮助。
我有一个 CTE,它对数万条记录进行了大量艰苦的工作。
如果我只是 运行 下面的 select 使用 CTE,它会在不到一秒的时间内返回。
但是,如果我在上面添加插入行,大约需要 30 秒!即使 select 只带回 1 或 2 条记录。
我已经用临时表、真实表、变量表试过了,它们都是一样的。
INSERT INTO VIPScoreLog --Fast without this line
SELECT
vs.CustomerId,
vs.VIPScore
FROM CTE_VIPScore vs
LEFT JOIN vw_LatestVIPScores lvs on vs.CustomerId = lvs.CustomerId
WHERE lvs.VIPScore IS NULL
OR lvs.VIPScore <> vs.VIPScore
有什么办法可以消除这 29 秒的延迟吗?
这在 SQL 服务器 2019
感谢 Golden Lion,我尝试用临时表替换 CTE,速度快如闪电。
不确定我明白为什么,但我想我现在已经排序了。
感谢大家的帮助。