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

truy vấn phân trang nhanh hơn oracle

Tôi thực sự không có sẵn Oracle bây giờ nhưng truy vấn SQL tốt nhất để phân trang là điều chắc chắn sau đây

select *
from (
        select rownum as rn, a.*
        from (
                select *
                from my_table
                order by ....a_unique_criteria...
            ) a
    )
where rownum <= :size
    and rn >  (:page-1)*:size

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

Để đạt được phân trang nhất quán bạn nên sắp xếp các hàng bằng cách sử dụng một tiêu chí duy nhất , làm như vậy sẽ tránh tải cho trang X một hàng mà bạn đã tải cho trang Y (! =X).

CHỈNH SỬA:

1) Sắp xếp các hàng bằng cách sử dụng một tiêu chí duy nhất có nghĩa là sắp xếp dữ liệu theo cách mà mỗi hàng sẽ giữ nguyên vị trí tại mỗi lần thực thi truy vấn

2) Một chỉ mục với tất cả các biểu thức được sử dụng trong mệnh đề ORDER BY sẽ giúp nhận được kết quả nhanh hơn, đặc biệt là đối với các trang đầu tiên. Với chỉ mục đó, kế hoạch thực thi do trình tối ưu hóa chọn không cần phải sắp xếp các hàng vì nó sẽ trả về các hàng cuộn chỉ mục theo thứ tự tự nhiên của nó.

3) Nhân tiện, cách nhanh nhất để chuyển trang kết quả từ một truy vấn là thực hiện truy vấn chỉ một lần và xử lý tất cả luồng từ phía ứng dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lấy các khóa được tạo từ chèn hàng loạt JDBC trong Oracle?

  2. Hàm NCHR () trong Oracle

  3. gọi một proc được lưu trữ qua một dblink

  4. Từng bước cài đặt R12.2.6 EBS trên Virtual Box

  5. Cách tích hợp Oracle và Kafka