Paging Oracle adalah keperluan yang sangat biasa, terutamanya apabila membangunkan aplikasi web dan API. Penomboran boleh mengurangkan penggunaan sumber pelayan dengan berkesan dan memberikan pengguna pengalaman yang lebih mesra. Jadi, bagaimanakah paging Oracle harus ditulis? Mari perkenalkan di bawah.
Pertama sekali, kita perlu menjelaskan keperluan kita. Katakan kita mempunyai jadual pesanan bernama pesanan, yang mengandungi banyak maklumat pesanan. Kami perlu menanyakan data nombor halaman yang ditentukan mengikut bilangan item tetap setiap halaman. Sebagai contoh, setiap halaman memaparkan 10 item dan menanyakan data pesanan pada halaman 3. Jadi, bagaimana untuk mencapainya? Seterusnya, kami akan memperkenalkan beberapa kaedah pelaksanaan secara terperinci.
1. Gunakan subquery untuk melaksanakan paging
Subquery ialah cara biasa untuk melaksanakan paging dalam Oracle, yang boleh dicapai dengan menggunakan ROWNUM. Idea asas ialah menggunakan ROWNUM dalam pertanyaan dalaman untuk mengisih, dan kemudian gunakan ROWNUM dalam pertanyaan luar untuk operasi halaman. Kodnya adalah seperti berikut:
SELECT?*?FROM?( ??SELECT?orders.*,?ROWNUM?rnum ??FROM?( ????SELECT?*?FROM?orders ????ORDER?BY?order_date?DESC ??)?orders ??WHERE?ROWNUM?<= 30 ) WHERE rnum >=?21;
Dalam kod di atas, pernyataan pertanyaan kami mengandungi tiga peringkat sarang. Pernyataan SELECT paling luar menggunakan klausa WHERE untuk menapis ROWNUM dan melaksanakan operasi paging. Pernyataan pertanyaan dalaman mengandungi pernyataan ORDER BY, yang digunakan terutamanya untuk mengisih data. Pernyataan SELECT paling dalam menentukan pesanan jadual yang ingin kami tanyakan.
2. Gunakan fungsi ROW_NUMBER() untuk melaksanakan paging
Cara lain untuk melaksanakan paging ialah menggunakan fungsi ROW_NUMBER(). Kaedah ini sangat berguna apabila kita perlu mengisih mengikut lajur tertentu. Kodnya adalah seperti berikut:
SELECT?* FROM?( ??SELECT?orders.*, ?????????ROW_NUMBER()?OVER(ORDER?BY?order_date?DESC)?AS?row_num ??FROM?orders )?WHERE?row_num?BETWEEN?21?AND?30;
Dalam kod di atas, kami menggunakan fungsi ROW_NUMBER() untuk menjana row_num medan baharu, yang digunakan untuk menentukan kedudukan setiap rekod selepas mengisih. Kita boleh menggunakan klausa WHERE untuk menapis rekod dalam julat yang ditentukan.
3. Gunakan OFFSET-FETCH untuk melaksanakan paging
Selepas Oracle 12c, cara baharu untuk melaksanakan paging telah diperkenalkan, iaitu menggunakan pernyataan OFFSET-FETCH. Berbanding dengan dua kaedah sebelumnya, kaedah ini lebih intuitif dan ringkas, dan kodnya lebih mudah dibaca dan difahami. Kodnya adalah seperti berikut:
SELECT?* FROM?orders ORDER?BY?order_date?DESC OFFSET?20?ROWS?FETCH?NEXT?10?ROWS?ONLY;
Dalam kod di atas, kami menggunakan pernyataan OFFSET-FETCH untuk melaksanakan operasi paging. OFFSET digunakan untuk menentukan offset, iaitu, baris mana untuk memulakan pertanyaan; FETCH digunakan untuk menentukan bilangan baris untuk pertanyaan Kaedah ini boleh memudahkan penyataan pertanyaan dan meningkatkan kecekapan pertanyaan.
Ringkasnya, artikel ini memperkenalkan tiga cara untuk melaksanakan paging Oracle, termasuk menggunakan subquery, fungsi ROW_NUMBER() dan pernyataan OFFSET-FETCH. Setiap kaedah mempunyai senario yang berkenaan, dan kaedah pelaksanaan khusus juga sedikit berbeza. Kita boleh memilih kaedah yang sepadan untuk melaksanakan paging Oracle mengikut keperluan yang berbeza.
Atas ialah kandungan terperinci Cara menulis paging oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Oracleensurestransactiondurabilityandconsistencyusingredoforcommitsandundoforrollbacks.Duringacommit,Oraclegeneratesacommitrecordintheredologbuffer,markschangesaspermanentinredologs,andupdatestheSCNtoreflectthecurrentdatabasestate.Forrollbacks,Oracle

Oraclesga terdiri daripada pelbagai komponen utama, yang masing -masing menjalankan fungsi yang berbeza: 1. DatabaseBufferCache bertanggungjawab untuk blok data caching untuk mengurangkan cakera I/O dan meningkatkan kecekapan pertanyaan; 2. Redologbuffer Records Database berubah untuk memastikan keupayaan urus niaga dan keupayaan pemulihan; 3. SharedPool termasuk LibraryCache dan DatAdictionaryCache, yang digunakan untuk menghidupkan hasil parsing SQL dan metadata; 4. LargePool menyediakan sokongan memori tambahan untuk RMAN, pelaksanaan selari dan tugas -tugas lain; 5. Javapool menyimpan definisi kelas Java dan objek sesi; 6. Streamspool digunakan untuk oracle

Ya, awrandaddmreportsareessforcoalforacleperformancetuning.1.awrrreportsprovidesnapshotsofdatabaseactivity, showtopsql, waitevents, sumber daya, danTrendsontime -usefulforidentinedeficientyqueriesandcacheeffectiveness.2.addmanalyzesze

SQLPlanManagement(SPM)ensuresstablequeryperformancebypreservingknowngoodexecutionplansandallowingonlyverifiedplanstobeused.1.SPMcapturesandstoresexecutionplansinSQLplanbaselines.2.Newplansarecheckedagainstthebaselineandnotusedunlessprovenbetterorsafe

Oracle secara automatik mengendalikan penukaran antara set aksara yang berbeza, tetapi jika set aksara sasaran tidak dapat mewakili aksara dalam set aksara sumber, kehilangan data atau penggantian mungkin berlaku. Mekanisme terasnya adalah menggunakan enjin penukaran terbina dalam untuk pemetaan aksara, yang sering kali apabila pelanggan dan pangkalan data NLS_LANG adalah tidak konsisten, penghantaran silang data, atau menggunakan fungsi Convert (). Pertimbangan utama termasuk: 1. Gunakan AL32UTF8 sebagai aksara pangkalan data yang ditetapkan untuk menyokong Unicode; 2. Konfigurasi dengan betul pelanggan nls_lang; 3. Gunakan NVARCHAR2 dan NCLOB untuk menyimpan data berbilang bahasa; 4. Gunakan alat CSSCAN untuk mengesan masalah yang berpotensi sebelum penghijrahan; 5. Berhati -hati dengan panjang (), substr () dan fungsi lain

Kesalahan tetapan NLS \ _lang akan menyebabkan kesilapan data atau format. Ia mengandungi tiga elemen: bahasa, rantau dan set aksara. Ia harus memastikan bahawa set watak klien dan perlawanan pangkalan data. Adalah disyorkan untuk menggunakan Al32utf8 untuk menyokong Unicode, dan mengawal parameter peringkat sesi melalui ketinggian. Pada masa yang sama, konfigurasikan pembolehubah persekitaran atau Windows Registry di UNIX/Linux untuk menggunakan tetapan dengan betul. Mata utama khusus termasuk: 1.nls \ _lang menentukan terjemahan mesej, format mata wang tarikh dan penukaran pengekodan aksara; 2. Set aksara klien mesti bersesuaian dengan pangkalan data, jika tidak, ia akan menyebabkan rasuah data; 3. Elakkan penukaran automatik dan uji aksara khas; 4. Parameter NLS lain seperti NLS \ _Date \ _for

StoredProcedures, Functions, andPackagesInpl/SQLimproveCodeModularityandreusabilitybyencapsulatinglogic, promoquedingcentralisasiMaintenance, andorganizingRelatedcomponents.1.StoredProceDurescruscrusinessLogicIntocallableUnits, reducingundancyandanceandSandancyandSandancyandSandancyandSandancyandSandancyandSandancyAndanceandSandanceandSandancySandanceandSandancySandanceandsandsandanclogicand

Pemecahan indeks mempengaruhi prestasi pertanyaan. Pengumpulan jangka panjang akan membawa kepada pertanyaan yang lebih perlahan, peningkatan beban I/O dan mengurangkan keupayaan tindak balas pangkalan data. Mereka terutamanya dibahagikan kepada serpihan dalaman (banyak ruang kosong di halaman) dan serpihan luaran (halaman tidak berterusan pada cakera). Pengesanan boleh dilakukan melalui SYS.DM_DB_INDEX_PHYSICAL_STATS SYS.DM_DB_DB_PHYSICALS, memberi tumpuan kepada metrik AVG_FRAGMENTATION_IN_PERCENT dan PAGE_COUNT. Kaedah pemprosesan termasuk: 30% Rekonstruksi yang disyorkan serpihan (membina semula). Penetapan faktor pengisian memerlukan tempahan ruang yang munasabah untuk mengurangkan pemisahan, tetapi ia tidak sepatutnya terlalu rendah. Tidak semua serpihan perlu diproses, dan keutamaan harus ditentukan berdasarkan kekerapan akses sebenar dan saiz jadual.
