What is the difference between
Set Rowcount X
And
Select Top X *
From Z
in TSQL?
Top can do a few more things for you. For one, you can specify a percentage, instead of an integer. You can also handle situations where ties in column values occur.
http://technet.microsoft.com/en-us/library/ms189463.aspx
In older versions of SQL Server (2005 and earlier I am not sure about 2008) you could not use a variable in a top statement so:
declare @rc int
set @rc=10
select top @rc * from myTable --Wont work
set rowcount @rc
select * from myTable --Will work
2008 and above allows
declare @rc int
set @rc=10000
select top (@rc) * from myTable --will now work
but only if you use () this can be usefull to use hints like:
OPTION ( OPTIMIZE FOR (@rc= 15) )
at the end allowing to select everithing but optimize for a more common case
The main difference is that top
will only effect the query you are running while set rowcount
will persist with the connection and apply to all queries executed within that connection.