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

Hvis PostgreSQL-antal(*) altid er langsom, hvordan pagineres komplekse forespørgsler?

Læste du overskriften på den artikel?

Bemærk, at følgende artikel kun gælder for versioner af PostgreSQL før 9.2. Indeks-scanninger er nu implementeret.

Brug 9.2, og du vil generelt opleve, at du får meget bedre resultater. Læs wiki-siden for kun indeksscanninger for detaljer.

Når det er sagt, på ældre versioner, der bruger LIMIT og OFFSET fungerer generelt fint. Du kan estimere rækketal (og dermed sidetal) ved hjælp af tabelstatistikken, hvis du ikke har noget imod lidt variation. Se "Estimering af rækkeantal" i den artikel, du allerede har linket til.

Paginering ved hjælp af LIMIT og OFFSET er, IMO, et anti-mønster alligevel. Meget af tiden kan du omformulere din pagineringskode, så den bruger sort_column > 'last_seen_value' LIMIT 100 , dvs. det undgår forskydningen. Dette kan nogle gange resultere i meget store præstationsgevinster.



  1. Konfigurer MySQL 8 fra Binary Tarball

  2. Hvilken version af PostgreSQL kører jeg?

  3. Binding af forespørgselsparametre efter navn med ODP.NET

  4. Oracle Ace ændringer