Đâ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.