Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

permintaan paging oracle lebih cepat

Saya sebenarnya tidak memiliki ketersediaan Oracle sekarang tetapi kueri SQL terbaik untuk paging adalah yang berikut ini dengan pasti

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

Untuk mencapai halaman yang konsisten Anda harus mengurutkan baris menggunakan kriteria unik , melakukannya akan menghindari memuat halaman X baris yang sudah Anda muat untuk halaman Y ( !=X ).

EDIT:

1) Memesan baris menggunakan kriteria unik berarti mengurutkan data sedemikian rupa sehingga setiap baris akan mempertahankan posisi yang sama pada setiap eksekusi kueri

2) Indeks dengan semua ekspresi yang digunakan pada klausa ORDER BY akan membantu mendapatkan hasil lebih cepat, terutama untuk halaman pertama. Dengan indeks tersebut, rencana eksekusi yang dipilih oleh pengoptimal tidak perlu mengurutkan baris karena akan mengembalikan baris yang menggulir indeks menurut urutan aslinya.

3) Omong-omong, cara tercepat ke hasil halaman dari kueri adalah dengan menjalankan kueri hanya sekali dan menangani semua aliran dari sisi aplikasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara LockModeType Jpa

  2. Java - meneruskan array dalam prosedur tersimpan Oracle

  3. Refleksi di PLSQL?

  4. Bagaimana cara terhubung ke Oracle DB jarak jauh dengan PL/SQL Developer?

  5. Encoding dan decoding Base64 di Oracle