Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Optymalnie wydajne zapytanie dla najnowszego rekordu dla każdego N

Zależy od Twoich danych (ile wierszy przypada na grupę?) i indeksów.

Zobacz Optymalizacja TOP N zapytań na grupę dla niektórych porównań wydajności 3 podejść.

W twoim przypadku z milionami wierszy dla niewielkiej liczby pojazdów dodałbym indeks na VehicleID, Timestamp i zrób

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wartość wydajności prowadnic COMB

  2. Policz na podstawie warunku w SQL Server

  3. Różnica między JOIN a INNER JOIN

  4. SQL Server:przekonwertuj ((int)rok,(int)miesiąc,(int)dzień) na Datetime

  5. Zapytanie cykliczne programu SQL Server