小编Gre*_*g R的帖子

执行计划有 TOP 运算符,用于没有 TOP 或 ORDER BY 的查询

在此处输入图片说明我有按月临时表的产品销售。(更大的历史表的子集)我正在运行查询以查找在指定的 6 个月范围内之前几个月未售出的新产品。因此,以 1 月为基础,在 2 月向我展示所有未在 1 月销售中销售的新产品。3 月所有未售出的新产品 1 月或 2 月销售等。前 5 个月查询返回次秒。第 6 个月,大约需要 5 分钟。比较执行计划,在第 6 个月,它显示我的执行计划中的 Top 运算符花费了额外的时间。但我没有在选择中排序或使用 Top X。我的查询中是什么导致了这种情况?我可以等 5 分钟,因为它是一次性请求,但我更多是从学习的角度询问,我想了解它为什么添加到 Top 运算符。提前致谢。

select divn_nbr, dept_nbr, vendorNumber, pid, nrfcolorNumber, periodcode    
from ##tmpSFA a 
where periodCode = '201512' 
and not exists  
(   
    select 1 from ##tmpSFA b
    where ISNULL(a.divn_nbr, -99) = isnull(b.divn_nbr, -99)
    and isnull(a.dept_nbr, -99) = isnull(b.dept_nbr, -99)
    and isnull(a.vendorNumber, -99) = isnull(b.vendorNumber, -99)
    and isnull(LTRIM(rtrim(upper(a.pid))), -99) = isnull(LTRIM(rtrim(upper(b.pid))), -99)
    and isnull(a.nrfcolorNumber, -99) …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan sql-server-2012 top

4
推荐指数
1
解决办法
285
查看次数

标签 统计

execution-plan ×1

sql-server ×1

sql-server-2012 ×1

top ×1