количество строк до и после запроса - PullRequest
1 голос
/ 26 августа 2011

Может кто-нибудь объяснить разницу между этими двумя простыми запросами ...

SET ROWCOUNT = 10
select * from t_Account order by account_date_last_maintenance

и этим

select * from t_Account order by account_date_last_maintenance
SET ROWCOUNT = 10

при выполнении оба возвращают только 10 строк, но строки разные,В таблице миллионы строк, если это имеет значение.Кроме того, первый запрос выполняется на 20% дольше.

Спасибо всем

1 Ответ

3 голосов
/ 26 августа 2011

Когда вы выполняете SET ROWCOUNT 10, вы говорите SQL остановить запрос после того, как будут возвращены 10 результатов.Ваш первый оператор SQL - правильный синтаксис (за исключением первой строки, которая должна читать SET ROWCOUNT 10).

Вторая записанная инструкция вернет все упорядоченные значения при первоначальном выполнении, а затем установит счетчик строк равным 10, поэтому при любом последующем выполнении вернутся первые 10 элементов.

ROWCOUNT должен быть установлен в 0, чтобы вернуть вещи к «нормальному» выполнению.

Что касается того, почему вещи возвращались по-разному, данные могут не обрабатываться каждый раз одинаково и с учетом размераиз вашего набора данных наиболее вероятно, что вы иногда можете получить совпадающие результаты, но это не совсем точно.Если вы хотите стабильных результатов и хотите только первые 10 результатов, я бы порекомендовал использовать TOP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...