sql >> Database >  >> RDS >> PostgreSQL

postgresql:offset + limiet wordt erg traag

Gebruik in plaats daarvan een cursor. Het gebruik van een OFFSET en LIMIT is behoorlijk duur - omdat pg een query moet uitvoeren, verwerken en een OFFSET-rij moet overslaan. OFFSET is als "rijen overslaan", dat is duur.

cursordocumentatie

Cursor staat een herhaling van één zoekopdracht toe.

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

Waarschijnlijk kunt u een cursor aan de serverzijde gebruiken zonder expliciet gebruik van de DECLARE-instructie, alleen met ondersteuning in psycopg (zoekgedeelte over cursors aan de serverzijde).



  1. SQL-query in FB JavaScript

  2. Hoe kan ik het IP-adres van de verbinding van de huidige gebruiker vinden in MySQL?

  3. mysql_result() verwacht dat parameter 1 resource is, boolean gegeven

  4. Alambiek:wijzig kolomtype met USING