Zkuste vytvořit index na (DeviceId, MessageCounter DESC) .
Zkuste také tento dotaz:
select *
from "Timestamps"
where DeviceId = 1
and MessageCounter = (SELECT MAX(MessageCounter) FROM "Timestamps" WHERE DeviceID = 1)
Jen hádám:Rozdíl ve výkonu může být způsoben tím, že DeviceId = 1 je rozložena na více stránek než DeviceId = 4 . Mám podezření, že tříděním vybagrujete všechny odpovídající stránky, i když nakonec vyberete pouze horní řádek.