在较大的查询中使用IF NOT EXISTES子查询时,我遇到了显著的性能差异.当独立运行时,子查询执行得很快,大约需要2秒.但是,当嵌入到较大的查询中时,总执行时间会急剧增加到4-5分钟.
我已经确保在相关表上定义了适当的索引,包括时态表nd.tblReqMatSum
.请注意,tmp.##mytable
是一个没有索引的全局临时表,但它几乎总是非常小.尽管如此,性能问题仍然存在.
下面是有问题的查询:
declare @result int=0
IF NOT EXISTS (
SELECT 1
FROM tmp.##mytable t
INNER JOIN nd.tblReqMatSum rms ON t.matnr = rms.matnr
WHERE rms.isActive = 1
)
BEGIN
SET @result = 1;
END
执行计划如下: