Försök att skapa ett index på (DeviceId, MessageCounter DESC)
.
Testa även den här frågan:
select *
from "Timestamps"
where DeviceId = 1
and MessageCounter = (SELECT MAX(MessageCounter) FROM "Timestamps" WHERE DeviceID = 1)
Gissar bara:prestandaskillnaden kan bero på att DeviceId = 1
är spridd över fler sidor än DeviceId = 4
. Genom att sortera misstänker jag att du muddrar upp alla matchande sidor, även om du bara väljer den översta raden.