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

Oracle &Pagination

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring JDBC Không thể tải lớp trình điều khiển JDBC [oracle.jdbc.driver.OracleDriver]

  2. Tạo số 0 đứng đầu trong Oracle

  3. Oracle - Tôi đang sử dụng tệp TNS Names nào?

  4. Tại sao tôi không thể sử dụng một biến ràng buộc trong một câu lệnh thực thi ngay lập tức?

  5. Cách tối ưu để XÓA các hàng được chỉ định khỏi Oracle