Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query con prestazioni ottimali per l'ultimo record per ogni N

Dipende dai tuoi dati (quante righe ci sono per gruppo?) e dai tuoi indici.

Vedi Ottimizzazione delle query TOP N per gruppo per alcuni confronti delle prestazioni di 3 approcci.

Nel tuo caso con milioni di righe solo per un piccolo numero di Veicoli aggiungerei un indice su VehicleID, Timestamp e fai

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