Ändern Sie die Abfrage in
WHERE NOT emails."$$meta.deleted" = FALSE
AND (emails."$$meta.created", emails.key) >
('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')
und verwenden Sie diesen Index:
CREATE INDEX ON emails ("$$meta.created", key)
WHERE NOT emails."$$meta.deleted";
Erklärung:OR
ist ein Leistungsproblem
. Indem Sie es in einen lexikografischen Vergleich von Paaren umschreiben, werden Sie das OR
los , und ein einfacher Index-Scan findet die Zeilen effizient. PostgreSQL ist nicht mehr versucht, den Index zu verwenden, der ORDER BY
unterstützt .