Tente criar um índice em
(DeviceId, MessageCounter DESC)
. Além disso, tente esta consulta:
select *
from "Timestamps"
where DeviceId = 1
and MessageCounter = (SELECT MAX(MessageCounter) FROM "Timestamps" WHERE DeviceID = 1)
Apenas supondo:a diferença de desempenho pode ser porque
DeviceId = 1
está espalhado por mais páginas que DeviceId = 4
. Ao classificar, suspeito que você esteja dragando todas as páginas correspondentes, mesmo que acabe selecionando apenas a linha superior.