Rumah pangkalan data Oracle Cara menulis paging dalam oracle

Cara menulis paging dalam oracle

Apr 04, 2023 pm 01:59 PM

Oracle ialah sistem pengurusan pangkalan data hubungan yang sangat popular yang menyediakan fungsi bahasa SQL yang kaya, termasuk pernyataan OFFSET dan FETCH untuk halaman. Dalam pembangunan sebenar, kami sering perlu menggunakan halaman untuk mengoptimumkan kecekapan pertanyaan dan meningkatkan pengalaman pengguna. Artikel ini akan memperkenalkan cara melaksanakan fungsi paging dalam Oracle.

1. Gunakan ROWNUM untuk halaman

Oracle mempunyai lajur pseudo ROWNUM terbina dalam, yang memberikan nombor berangka dalam urutan dan boleh digunakan untuk operasi halaman. Kami boleh mendapatkan keseluruhan keputusan yang ditetapkan melalui pertanyaan, dan kemudian menggunakan ROWNUM untuk menapis data dengan nombor halaman dan nombor rekod yang ditentukan.

Sebagai contoh, katakan kita mempunyai jadual bernama PEKERJA dan perlu menanyakan halaman 2 dan memaparkan 10 rekod pada setiap halaman Anda boleh menggunakan pernyataan SQL berikut untuk melaksanakan paging.

SELECT *
FROM (
  SELECT ROWNUM rn, e.*
  FROM EMPLOYEE e
  WHERE ROWNUM <= :page * :pageSize
)
WHERE rn > (:page - 1) * :pageSize
Salin selepas log masuk

Antaranya, :page dan :pageSize ialah parameter, menunjukkan nombor halaman yang akan ditanya dan bilangan rekod yang dipaparkan pada setiap halaman. Proses khusus pernyataan SQL ini adalah seperti berikut:

  1. Pertanyaan dalaman terlebih dahulu mengisih rekod dalam jadual PEKERJA mengikut saiz ROWNUM dan memberikan nombor ROWNUM kepada setiap rekod.
  2. Pertanyaan luaran kemudiannya beroperasi pada set hasil pertanyaan dalaman, menggunakan WHERE rn > (:page - 1) * :pageSize untuk menapis data dengan nombor halaman dan nombor rekod.

Memandangkan ROWNUM diperuntukkan selepas mengisih, pertanyaan dalaman mesti mengisih data dahulu, jika tidak, hasil halaman tidak akan ditentukan.

Perlu diambil perhatian bahawa jika hasil pertanyaan hanya mempunyai satu rekod, menggunakan pernyataan SQL di atas boleh menyebabkan keputusan yang ditetapkan menjadi kosong. Penyelesaiannya ialah menukar WHERE rn > (:page - 1) :pageSize kepada WHERE rn BETWEEN ((:page - 1) :pageSize + 1) DAN (:page * :pageSize).

2. Gunakan paging OFFSET dan FETCH

Bermula dari Oracle 12c, ia menyokong paging menggunakan pernyataan OFFSET dan FETCH. Kaedah ini tidak memerlukan penggunaan ROWNUM, dan sintaksnya lebih ringkas dan jelas. Berikut adalah contoh penggunaan OFFSET dan FETCH untuk melaksanakan paging:

SELECT *
FROM EMPLOYEE
ORDER BY emp_id
OFFSET (:page - 1) * :pageSize ROWS
FETCH NEXT :pageSize ROWS ONLY
Salin selepas log masuk

Antaranya, :page dan :pageSize masing-masing mewakili nombor halaman yang hendak disoal dan bilangan rekod yang dipaparkan pada setiap halaman. Proses khusus pernyataan SQL ini adalah seperti berikut:

  1. Mula-mula susun rekod dalam jadual PEKERJA mengikut emp_id.
  2. OFFSET (:halaman - 1) * :pageSize ROWS menentukan bilangan baris untuk dilangkau, iaitu kedudukan rekod permulaan untuk disoal dalam jadual yang diisih.
  3. FETCH NEXT :pageSize ROWS SAHAJA menentukan bilangan rekod yang hendak disoal, iaitu bilangan rekod yang dipaparkan pada setiap halaman.

Berhati-hati apabila menggunakan pernyataan OFFSET dan FETCH untuk membuat pertanyaan Jika bilangan rekod yang ditanya kurang daripada satu halaman, hasil pertanyaan akan kosong. Dalam kes ini, kita perlu mengira secara manual bilangan rekod yang tinggal dan menapis menggunakan klausa WHERE.

3. Ringkasan

Di atas memperkenalkan dua kaedah untuk melaksanakan fungsi paging dalam pangkalan data Oracle: menggunakan ROWNUM dan menggunakan OFFSET dan FETCH. Kedua-dua kaedah mempunyai kelebihan dan kekurangan mereka sendiri, dan pembangun boleh memilih kaedah yang sesuai mengikut senario aplikasi tertentu.

Perlu diambil perhatian bahawa untuk meningkatkan kecekapan pertanyaan, indeks yang sesuai harus digunakan semasa halaman. Pada masa yang sama, jika keputusan pertanyaan melebihi 1,000, pertanyaan paging harus ditukar menjadi pertanyaan kelompok untuk mengelakkan memulangkan terlalu banyak data dalam satu pertanyaan.

Atas ialah kandungan terperinci Cara menulis paging dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana saya membuat pengguna dan peranan dalam oracle? Bagaimana saya membuat pengguna dan peranan dalam oracle? Mar 17, 2025 pm 06:41 PM

Artikel ini menerangkan cara membuat pengguna dan peranan dalam Oracle menggunakan arahan SQL, dan membincangkan amalan terbaik untuk menguruskan kebenaran pengguna, termasuk menggunakan peranan, mengikuti prinsip keistimewaan paling sedikit, dan audit biasa.

Bagaimana saya mengkonfigurasi penyulitan dalam oracle menggunakan penyulitan data telus (TDE)? Bagaimana saya mengkonfigurasi penyulitan dalam oracle menggunakan penyulitan data telus (TDE)? Mar 17, 2025 pm 06:43 PM

Artikel ini menggariskan langkah -langkah untuk mengkonfigurasi penyulitan data telus (TDE) di Oracle, memperincikan penciptaan dompet, membolehkan TDE, dan penyulitan data di pelbagai peringkat. Ia juga membincangkan manfaat TDE seperti perlindungan data dan pematuhan, dan bagaimana untuk veri

Bagaimana saya melakukan sandaran dalam talian di oracle dengan downtime minimum? Bagaimana saya melakukan sandaran dalam talian di oracle dengan downtime minimum? Mar 17, 2025 pm 06:39 PM

Artikel ini membincangkan kaedah untuk melakukan sandaran dalam talian di Oracle dengan downtime yang minimum menggunakan RMAN, amalan terbaik untuk mengurangkan downtime, memastikan konsistensi data, dan memantau kemajuan sandaran.

Bagaimana Saya Menggunakan Repositori Beban Kerja Automatik (AWR) dan Monitor Diagnostik Pangkalan Data Automatik (ADDM) di Oracle? Bagaimana Saya Menggunakan Repositori Beban Kerja Automatik (AWR) dan Monitor Diagnostik Pangkalan Data Automatik (ADDM) di Oracle? Mar 17, 2025 pm 06:44 PM

Artikel ini menerangkan cara menggunakan AWR dan Addm Oracle untuk pengoptimuman prestasi pangkalan data. Ia memperincikan penjanaan dan menganalisis laporan AWR, dan menggunakan Addm untuk mengenal pasti dan menyelesaikan kesesakan prestasi.

Oracle PL/SQL Dive Deep: Menguasai Prosedur, Fungsi & Pakej Oracle PL/SQL Dive Deep: Menguasai Prosedur, Fungsi & Pakej Apr 03, 2025 am 12:03 AM

Prosedur, fungsi dan pakej dalam OraclePL/SQL digunakan untuk melaksanakan operasi, mengembalikan nilai dan menyusun kod, masing -masing. 1. Proses ini digunakan untuk melakukan operasi seperti mengeluarkan salam. 2. Fungsi ini digunakan untuk mengira dan mengembalikan nilai, seperti mengira jumlah dua nombor. 3. Pakej digunakan untuk mengatur unsur -unsur yang relevan dan meningkatkan modulariti dan mengekalkan kod, seperti pakej yang menguruskan inventori.

Oracle GoldenGate: Replikasi & Integrasi Data Masa Nyata Oracle GoldenGate: Replikasi & Integrasi Data Masa Nyata Apr 04, 2025 am 12:12 AM

OracleGoldEngate membolehkan replikasi dan integrasi data masa nyata dengan menangkap log transaksi pangkalan data sumber dan menggunakan perubahan pada pangkalan data sasaran. 1) Tangkap perubahan: Baca log transaksi pangkalan data sumber dan tukarnya ke fail jejak. 2) Perubahan penghantaran: Transmisi ke sistem sasaran melalui rangkaian, dan penghantaran diuruskan menggunakan proses pam data. 3) Perubahan Aplikasi: Pada sistem sasaran, proses salinan membaca fail jejak dan menggunakan perubahan untuk memastikan konsistensi data.

Cara memeriksa saiz meja oracle Cara memeriksa saiz meja oracle Apr 11, 2025 pm 08:15 PM

Untuk menanyakan saiz ruang meja oracle, ikuti langkah -langkah berikut: Tentukan nama meja dengan menjalankan pertanyaan: pilih Tablespace_Name dari DBA_TableSpaces; Tanya saiz meja dengan menjalankan pertanyaan: pilih jumlah (bait) sebagai total_size, jumlah (bytes_free) sebagai tersedia_space, jumlah (bytes) - jumlah (bytes_free) sebagai digunakan_space dari dba_data_files di mana tablespace_

Bagaimanakah saya melakukan operasi switchover dan failover di Oracle Data Guard? Bagaimanakah saya melakukan operasi switchover dan failover di Oracle Data Guard? Mar 17, 2025 pm 06:37 PM

Prosedur butiran artikel untuk switchover dan failover dalam Pengawal Data Oracle, menekankan perbezaan, perancangan, dan ujian mereka untuk meminimumkan kehilangan data dan memastikan operasi yang lancar.

See all articles