Топ может сделать еще несколько вещей для вас. Во-первых, вы можете указать процент, а не целое число. Вы также можете обрабатывать ситуации, когда происходят связи в значениях столбцов.
Основное отличие состоит в том, что top будет выполнять только запрос, который вы выполняете, в то время как set rowcount будет сохраняться при подключении и применяться ко всем запросам, выполняемым в этом соединении.
Ответ 3
В более старых версиях SQL Server (2005 и ранее я не уверен в 2008) вы не могли использовать переменную в верхнем выражении, поэтому:
declare @rc int
set @rc=10
select top @rc * from myTable --Wont work
set rowcount @rc
select * from myTable --Will work
Ответ 4
2008 и выше позволяет
declare @rc int
set @rc=10000
select top (@rc) * from myTable --will now work
но только если вы используете(), это может быть полезно использовать подсказки вроде:
OPTION ( OPTIMIZE FOR (@rc= 15) )
в конце
позволяя выбирать everithing, но оптимизировать для более распространенного случая