sql >> Databáze >  >> RDS >> PostgreSQL

stránkování a filtrování na velmi velké tabulce v postgresql (stránkování sady klíčů?)

Zde je návod, jak to řeším. Pro první stránku, kterou načtu, používám

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

Poté ve svém klientském programu (node.js) zachytím id hodnotu z posledního řádku sady výsledků. Když potřebuji další stránku, udělám to.

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

To zneužívá index. A funguje správně, i když jste z tabulky odstranili některé řádky.

Mimochodem, pravděpodobně budete chtít sestupný index, pokud má vaše první stránka stránkování největší ID. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Tip pro profesionály SELECT * je škodlivý pro výkon ve velkých databázích. Vždy uveďte sloupce, které skutečně potřebujete.



  1. Cake php Třída zdroje dat MySQL nebyla nalezena

  2. Jak vytvořit FULLTEXTOVÝ index na více sloupcích?

  3. Abstraktní třída z UML do ER diagramu. Možný ? Jak?

  4. Postgresql escape jednoduchá uvozovka v klauzuli where