PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

paginacja i filtrowanie na bardzo dużej tabeli w postgresql (paginacja zestawu kluczy?)

Oto jak sobie z tym radzę. Na pierwszej pobranej stronie używam

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

Następnie w moim programie klienckim (node.js) przechwytuję id wartość z ostatniego wiersza zestawu wyników. Kiedy potrzebuję następnej strony, robię to.

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

To wykorzystuje indeks. I działa poprawnie, nawet jeśli usunąłeś niektóre wiersze z tabeli.

Nawiasem mówiąc, prawdopodobnie potrzebujesz indeksu malejącego, jeśli Twoja pierwsza strona ma największe identyfikatory. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Wskazówka dla profesjonalistów SELECT * jest szkodliwy dla wydajności w dużych bazach danych. Zawsze wymieniaj kolumny, których naprawdę potrzebujesz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego null||null zwraca wartość null, ale concat(null,null) zwraca pusty ciąg w postgresie?

  2. Błąd Heroku PostgreSQL GROUP_BY w aplikacji Rails

  3. Jak utworzyć indeks w PostgreSQL oparty tylko na małych literach?

  4. Cofanie alokacji przygotowanych zapytań

  5. Zezwalaj tylko na role listy użytkowników postgres