sql >> Base de Datos >  >> RDS >> PostgreSQL

postgres solo usa el índice ordenado para consultar la tabla de registros de 5m

Cambiar la consulta a

WHERE NOT emails."$$meta.deleted" = FALSE
  AND (emails."$$meta.created", emails.key) >
      ('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')

y usa este índice:

CREATE INDEX ON emails ("$$meta.created", key)
   WHERE NOT emails."$$meta.deleted";

Explicación:OR es un problema de rendimiento . Al reescribirlo como una comparación lexicográfica de pares, se deshace del OR , y un escaneo de índice simple encuentra las filas de manera eficiente. PostgreSQL ya no tiene la tentación de usar el índice que admite ORDER BY .