sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta de rendimiento óptimo para el último registro para cada N

Depende de sus datos (¿cuántas filas hay por grupo?) y sus índices.

Consulte Optimización de consultas TOP N por grupo para algunas comparaciones de rendimiento de 3 enfoques.

En su caso, con millones de filas para solo una pequeña cantidad de vehículos, agregaría un índice en VehicleID, Timestamp y hacer

SELECT CA.*
FROM   Vehicles V
       CROSS APPLY (SELECT TOP 1 *
                    FROM   ChannelValue CV
                    WHERE  CV.VehicleID = V.VehicleID
                    ORDER  BY TimeStamp DESC) CA