PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

pagination dan filtering pada tabel yang sangat besar di postgresql (keyset pagination?)

Inilah cara saya menangani ini. Untuk halaman pertama yang saya ambil, saya menggunakan

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

Kemudian, dalam program klien saya (node.js) saya menangkap id nilai dari baris terakhir dari kumpulan hasil. Ketika saya membutuhkan halaman berikutnya, saya melakukan ini.

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

Ini mengeksploitasi index. Dan itu berfungsi dengan benar bahkan jika Anda telah menghapus beberapa baris dari tabel.

Omong-omong, Anda mungkin menginginkan indeks turun jika halaman pagination pertama Anda memiliki id terbesar. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Kiat profesional SELECT * berbahaya bagi kinerja pada database besar. Selalu cantumkan kolom yang benar-benar Anda butuhkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya menggunakan perintah \copy ke dalam fungsi postgresql?

  2. Cara mengatur beberapa variabel konteks untuk pengguna/koneksi

  3. Postgres - versi terakhir 0.14.0 dari permata pg memberikan kesalahan

  4. Ekspresi reguler dalam klausa LIKE PostgreSQL

  5. Meningkatkan ke PostgreSQL13