Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Requête de performance optimale pour le dernier enregistrement pour chaque N

Cela dépend de vos données (combien de lignes y a-t-il par groupe ?) et de vos index.

Voir Optimiser les requêtes TOP N par groupe pour quelques comparaisons de performances de 3 approches.

Dans votre cas avec des millions de lignes pour seulement un petit nombre de véhicules, j'ajouterais un index sur VehicleID, Timestamp et faites

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