Altere a consulta para
WHERE NOT emails."$$meta.deleted" = FALSE
AND (emails."$$meta.created", emails.key) >
('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')
e use este índice:
CREATE INDEX ON emails ("$$meta.created", key)
WHERE NOT emails."$$meta.deleted";
Explicação:
OR
é um problema de desempenho
. Ao reescrevê-lo como uma comparação lexicográfica de pares, você se livra do OR
, e uma varredura de índice simples localiza as linhas com eficiência. O PostgreSQL não é mais tentado a usar o índice que suporta o ORDER BY
.