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.