PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgres usando apenas índice classificado para consultar a tabela de registros de 5 milhões


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 .