Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta de desempenho ideal para o registro mais recente para cada N


Depende de seus dados (quantas linhas existem por grupo?) e seus índices.

Consulte Otimização de consultas TOP N por grupo para algumas comparações de desempenho de 3 abordagens.

No seu caso, com milhões de linhas para apenas um pequeno número de veículos, eu adicionaria um índice em VehicleID, Timestamp e fazer
SELECT CA.*
FROM   Vehicles V
       CROSS APPLY (SELECT TOP 1 *
                    FROM   ChannelValue CV
                    WHERE  CV.VehicleID = V.VehicleID
                    ORDER  BY TimeStamp DESC) CA