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: