Tsql SQL行数vs Top

Tsql SQL行数vs Top,tsql,Tsql,两者的区别是什么 Set Rowcount X 及 在TSQL?中,主要区别在于top只会影响您正在运行的查询,而set rowcount将在连接中保持并应用于该连接中执行的所有查询。top可以为您做更多的事情。首先,可以指定百分比,而不是整数。您还可以处理列值中出现关联的情况 在较旧版本的SQL Server(2005年及更早版本,我不确定2008年)中,您不能在top语句中使用变量,因此: declare @rc int set @rc=10 select top @rc * from

两者的区别是什么

Set Rowcount X


在TSQL?

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

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


在较旧版本的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
2008年及以上

declare @rc int

set @rc=10000

select top (@rc) * from myTable --will now work
但只有使用()时,才能使用以下提示:

OPTION ( OPTIMIZE FOR (@rc= 15) )
最后
允许选择所有内容,但针对更常见的情况进行优化

这是一个棘手的问题。有没有办法设置行数,这只会影响当前查询?@crosenblum如果在查询后执行
set rowcount 0
,应该可以。
OPTION ( OPTIMIZE FOR (@rc= 15) )