sql >> Base de Datos >  >> RDS >> PostgreSQL

paginación y filtrado en una tabla muy grande en postgresql (¿paginación de conjunto de claves?)

Así es como manejo esto. Para la primera página que busco, uso

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

Luego, en mi programa cliente (node.js) capturo el id valor de la última fila del conjunto de resultados. Cuando necesito la página siguiente, hago esto.

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

Esto explota el index. Y funciona correctamente incluso si ha eliminado algunas filas de la tabla.

Por cierto, probablemente desee un índice descendente si su primera página de paginación tiene las identificaciones más grandes. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Consejo profesional SELECT * es perjudicial para el rendimiento en bases de datos grandes. Enumere siempre las columnas que realmente necesita.