Подтвердить что ты не робот

SQL Rowcount против Top

В чем разница между

Set Rowcount X

И

Select Top X *
From Z

в TSQL?

4b9b3361

Ответ 1

Топ может сделать еще несколько вещей для вас. Во-первых, вы можете указать процент, а не целое число. Вы также можете обрабатывать ситуации, когда происходят связи в значениях столбцов.

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

Ответ 2

Основное отличие состоит в том, что 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, но оптимизировать для более распространенного случая