Estoy aprendiendo sobre los planes de ejecución y estoy probando diferentes consultas y comparando su rendimiento y me topé con esto:
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 devuelven el mismo conjunto de resultados; sin embargo, el primero se ejecuta más rápido y consume menos recursos (al menos SSMS me dice que) Aquí hay planes de ejecución:
Comparación de SQL Query Plan Explorer: ¿Alguien podría darme una idea de lo que realmente está sucediendo detrás de escena y por qué los resultados difieren? Si necesita algo más, hágamelo saber.
Gracias Evaldas.