PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

postgresql:offset + limit става много бавен

Вместо това използвайте курсор. Използването на OFFSET и LIMIT е доста скъпо - защото pg трябва да изпълни заявка, да обработи и да пропусне OFFSET редове. OFFSET е като "пропускане на редове", което е скъпо.

документация за курсора

Курсорът позволява итерация върху една заявка.

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

Вероятно можете да използвате курсор от страна на сървъра без изрично използване на израза DECLARE, само с поддръжка в psycopg (раздел за търсене относно курсори от страна на сървъра).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ръчно освободете Postgres LOCK

  2. Слабо представяне на Dataframe в Postgresql

  3. Postgresql рекурсивно самостоятелно присъединяване

  4. Изберете Номер на ред в postgres

  5. Съхранявайте низ със специални знаци като кавички или обратна наклонена черта в таблицата postgresql