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

postgresql:offset + limit bliver meget langsom

Brug en markør i stedet for. Det er ret dyrt at bruge en OFFSET og LIMIT - fordi pg skal udføre forespørgsel, behandle og springe en OFFSET-rækker over. OFFSET er ligesom "spring rækker over", det er dyrt.

markørdokumentation

Markøren tillader en iteration over én forespørgsel.

BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;

Sandsynligvis kan du bruge en markør på serversiden uden eksplicit brug af DECLARE-sætning, bare med understøttelse i psycopg (søg sektion om serversidemarkører).



  1. Brug af en if-betingelse i en indsættelse af SQL Server

  2. Referencedatamønsteret:Udvidbart og fleksibelt

  3. MySQL - generer en liste over mest 'populære' poster

  4. Hvordan omdefinerer man nextval globalt i PostgreSQL?