sql >> Database teknologi >  >> RDS >> PostgreSQL

postgres bruger kun sorteret indeks til forespørgsel på 5m posttabel

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 .




  1. PostgreSQL fremtvinger standard SQL-syntaks

  2. Sådan tilføjes og ændres XML-tags i PHP

  3. Laravel:Hent objekt fra samling efter egenskab

  4. Oracle-forespørgsel for at få en bestemt dato