Truy vấn của bạn sẽ cần tính đến 90M đầu tiên bản ghi để lấy 100 tiếp theo , vì vậy hầu như không có chỗ để cải thiện.
Tôi không thấy ORDER BY trong truy vấn con của bạn, nhưng có thể bạn có nó. Trong trường hợp này, bạn có thể muốn tạo một chỉ mục trên đó.
Và một câu hỏi:liệu người dùng của bạn có thực sự nhấp qua 900K trang trước khi phàn nàn về hiệu suất?
Cập nhật:
Nếu bạn cần trang mới nhất, bạn cần viết lại ORDER BY cột theo thứ tự giảm dần:
SELECT *
FROM (
SELECT rownum rnum, f.*
FROM findings f
ORDER BY
record_ordering_column DESC
)
WHERE rnum > 900
AND rownum <= 100
và tạo chỉ mục trên record_ordering_column
Lưu ý rằng tôi kết hợp rownum từ các truy vấn lồng nhau để cải thiện hiệu suất.
Xem bài viết này trong blog của tôi để biết thêm chi tiết: