Prova a creare un indice su (DeviceId, MessageCounter DESC)
.
Inoltre, prova questa query:
select *
from "Timestamps"
where DeviceId = 1
and MessageCounter = (SELECT MAX(MessageCounter) FROM "Timestamps" WHERE DeviceID = 1)
Solo per indovinare:la differenza di prestazioni potrebbe essere dovuta a DeviceId = 1
è distribuito su più pagine di DeviceId = 4
. Con l'ordinamento, sospetto che tu stia estrapolando tutte le pagine corrispondenti, anche se finisci per selezionare solo la riga superiore.