Skift forespørgslen til
WHERE NOT emails."$$meta.deleted" = FALSE
AND (emails."$$meta.created", emails.key) >
('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')
og brug dette indeks:
CREATE INDEX ON emails ("$$meta.created", key)
WHERE NOT emails."$$meta.deleted";
Forklaring:OR
er et ydeevneproblem
. Ved at omskrive det som en leksikografisk sammenligning af par, slipper du for OR
, og en simpel indeksscanning finder rækkerne effektivt. PostgreSQL er ikke længere fristet til at bruge indekset, der understøtter ORDER BY
.