Я изучаю планы выполнения и пробую разные запросы, сравниваю их производительность и наткнулся на это:
SELECT StatisticID
FROM (
SELECT StatisticID, ROW_NUMBER() OVER (ORDER BY StatisticID) AS rn
FROM FTCatalog.Statistic
) AS T
WHERE T.rn <= 1000
ORDER BY rn
SELECT TOP 1000 StatisticID
FROM FTCatalog.Statistic
ORDER BY StatisticID
Они оба возвращают один и тот же набор результатов - однако первый выполняется быстрее и требует меньше ресурсов (по крайней мере, SSMS говорит мне об этом). Вот планы выполнения:
Сравнение с SQL Query Plan Explorer. Может ли кто-нибудь дать мне некоторое представление о том, что на самом деле происходит за кулисами и почему результаты отличаются? Если есть что-то еще, что вам нужно - просто дайте мне знать.
Спасибо, Эвалдас.