Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abfrage mit optimaler Leistung für den neuesten Datensatz für jedes N

Hängt von Ihren Daten (wie viele Zeilen gibt es pro Gruppe?) Und Ihren Indizes ab.

Siehe Top-n-Abfragen pro Gruppe optimieren für einige Leistungsvergleiche von 3 Ansätzen.

In Ihrem Fall mit Millionen von Zeilen für nur eine kleine Anzahl von Fahrzeugen würde ich einen Index für VehicleID, Timestamp hinzufügen und mach

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