使用ROWCOUNT的SQL Server性能

时间:2011-08-17 10:23:55

标签: performance sql-server-2005

我使用SET ROWCOUNT 27900然后选择两列:

Select
   emp.employeeid,
   empd.employeedetailid
From
   employee emp (NOLOCK)
join 
   employeedetail empd (NOLOCK) on emp.employeeid = empd.employeeid 

此查询在3秒后执行

如果我使用SET ROWCOUNT 27950,则相同的查询需要20秒才能执行。

我不是一个SQL DBA,为什么只有50行有17秒的差异。这与页面大小或索引有关吗?

有人可以帮我调整查询吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用TOP代替SET ROWCOUNT,并添加ORDER BY

SELECT TOP 27900 emp.employeeid, ...
ORDER BY ...;

这将为优化器提供更好的优化机会。简单来说,在处理完整个查询之后,应用了SET ROWCOUNT,并且仅影响发送回调用方的行...