PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

phân trang và lọc trên một bảng rất lớn trong postgresql (phân trang bộ phím?)

Đây là cách tôi xử lý việc này. Đối với trang đầu tiên tôi tìm nạp, tôi sử dụng

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

Sau đó, trong chương trình khách hàng của tôi (node.js), tôi nắm bắt được id giá trị từ hàng cuối cùng của tập kết quả. Khi tôi cần trang tiếp theo, tôi làm điều này.

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

Điều này khai thác chỉ mục. Và nó hoạt động chính xác ngay cả khi bạn đã xóa một số hàng khỏi bảng.

Nhân tiện, bạn có thể muốn một chỉ mục giảm dần nếu trang phân trang đầu tiên của bạn có id lớn nhất. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC) .

Mẹo chuyên nghiệp SELECT * có hại cho hiệu suất trên cơ sở dữ liệu lớn. Luôn liệt kê các cột bạn thực sự cần.



  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:ràng buộc ảnh hưởng đến nhiều bảng

  2. Tính đa hình trong bảng cơ sở dữ liệu SQL?

  3. Postgres SSL lỗi

  4. kết nối phiên bản postgres sql của google cloud từ đường ống chùm

  5. Làm thế nào để làm việc với PGpoint cho Định vị địa lý bằng PostgreSQL?