Ändra frågan till
WHERE NOT emails."$$meta.deleted" = FALSE
AND (emails."$$meta.created", emails.key) >
('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')
och använd detta index:
CREATE INDEX ON emails ("$$meta.created", key)
WHERE NOT emails."$$meta.deleted";
Förklaring:OR
är ett prestandaproblem
. Genom att skriva om det som en lexikografisk jämförelse av par, blir du av med OR
, och en enkel indexskanning hittar raderna effektivt. PostgreSQL är inte längre frestad att använda indexet som stöder ORDER BY
.