之间有什么区别
Set Rowcount X
并且
Select Top X *
From Z
在TSQL中?
答案 0 :(得分:10)
主要区别在于top
只会影响您正在运行的查询,set rowcount
将与连接保持一致并应用于在该连接中执行的所有查询。
答案 1 :(得分:7)
Top可以为您做更多的事情。例如,您可以指定百分比,而不是整数。您还可以处理列值中出现关联的情况。
答案 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但优化更常见的情况