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

страниране и филтриране на много голяма таблица в postgresql (страниране на набор от ключове?)

Ето как се справям с това. За първата страница, която извличам, използвам

SELECT id, col, col, col 
  FROM output 
 ORDER BY id DESC
 LIMIT 10000

След това в моята клиентска програма (node.js) улавям id стойност от последния ред на набора от резултати. Когато имам нужда от следващата страница, правя това.

 SELECT id, col, col, col
   FROM output
  WHERE id < my_captured_id_value
  ORDER BY id DESC

Това използва индекса. И работи правилно, дори ако сте изтрили някои редове от таблицата.

Между другото, вероятно искате низходящ индекс, ако първата ви страница за пагинация има най-големите идентификатори. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Професионален съвет SELECT * е вредно за производителността на големи бази данни. Винаги изброявайте колоните, от които наистина се нуждаете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Тестване на функции на PostgreSQL, които консумират и връщат рекурсора

  2. Не можете да вмъкнете нов ред в таблицата на базата данни на postgres?

  3. SQL заявка за получаване на списъка с йерархията на надзора. служител --> ръководител --> ръководител

  4. Как мога да избера съседни редове към произволен ред (в sql или postgresql)?

  5. Външният ключ на postgres включва ли индекс?