Estou aprendendo sobre os planos de execução e testando diferentes consultas, comparando seu desempenho e deparamos com isso:
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
Ambos retornam o mesmo conjunto de resultados - no entanto, o primeiro é executado mais rapidamente e consome menos recursos (pelo menos o SSMS me diz isso) Aqui estão os planos de execução:
Comparação do SQL Query Plan Explorer: Alguém poderia me dar uma ideia do que realmente está acontecendo nos bastidores e por que os resultados diferem? Se precisar de mais alguma coisa, me avise.
Obrigado, Evaldas.