SQL Rowcount vs Top

时间:2009-05-14 14:41:01

标签: tsql

之间有什么区别
Set Rowcount X

并且

Select Top X *
From Z
在TSQL中

4 个答案:

答案 0 :(得分:10)

主要区别在于top只会影响您正在运行的查询,set rowcount将与连接保持一致并应用于在该连接中执行的所有查询。

答案 1 :(得分:7)

Top可以为您做更多的事情。例如,您可以指定百分比,而不是整数。您还可以处理列值中出现关联的情况。

http://technet.microsoft.com/en-us/library/ms189463.aspx

答案 2 :(得分:4)

在旧版本的SQL Server(2005及更早版本,我不确定2008年)中,您无法在top语句中使用变量,因此:

declare @rc int

set @rc=10

select top @rc * from myTable --Wont work

set rowcount @rc
select * from myTable --Will work

答案 3 :(得分:4)

2008及以上允许

declare @rc int

set @rc=10000

select top (@rc) * from myTable --will now work

但是只有在使用()时才能使用这样的提示:

OPTION ( OPTIMIZE FOR (@rc= 15) )

最后 允许选择everithing但优化更常见的情况