sql >> Databasteknik >  >> RDS >> Sqlserver

Optimal presterande fråga för senaste posten för varje N

Beror på dina data (hur många rader finns det per grupp?) och dina index.

Se Optimera TOP N per gruppfrågor för vissa prestandajämförelser av 3 tillvägagångssätt.

I ditt fall med miljontals rader för endast ett litet antal fordon skulle jag lägga till ett index på VehicleID, Timestamp och gör

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


  1. Välj n slumpmässiga rader från SQL Server-tabellen

  2. Hur TIMESTAMPDIFF() fungerar i MariaDB

  3. Är det möjligt att ange villkor i Count()?

  4. Hur man hittar aktuella öppna markörer i Oracle