SQL Rowcount против Top - PullRequest
       10

SQL Rowcount против Top

14 голосов
/ 14 мая 2009

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

Set Rowcount X

А

Select Top X *
From Z

в TSQL?

Ответы [ 4 ]

10 голосов
/ 14 мая 2009

Основное отличие состоит в том, что top будет влиять только на выполняемый вами запрос, в то время как set rowcount будет сохраняться при подключении и применяться ко всем запросам, выполняемым в этом подключении.

7 голосов
/ 14 мая 2009

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

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

4 голосов
/ 20 ноября 2012

2008 и выше позволяет

declare @rc int

set @rc=10000

select top (@rc) * from myTable --will now work

но только если вы используете (), это может быть полезно для использования таких подсказок, как:

OPTION ( OPTIMIZE FOR (@rc= 15) )

в конце позволяет выбрать все, но оптимизировать для более распространенного случая

4 голосов
/ 14 мая 2009

В более старых версиях 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...