Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Jumlah Kiraan Hasil Dengan Cekap Sebelum Menggunakan Klausa LIMIT dalam PostgreSQL?
Apabila bekerja dengan data pangkalan data, menentukan jumlah halaman adalah penting untuk memaparkan kawalan navigasi bermuka surat. Pendekatan tradisional ialah melakukan pertanyaan dua kali, tetapi ini tidak cekap. Artikel ini meneroka kaedah alternatif untuk menentukan kiraan hasil sambil meminimumkan bilangan pertanyaan yang diperlukan.
Bermula dengan PostgreSQL versi 8.4, fungsi tetingkap menyediakan cara yang berkesan untuk mengumpulkan kedua-dua keputusan kiraan penuh dan set hasil terhad dalam satu pertanyaan. Menggunakan klausa OVER()
bersama dengan fungsi count(*)
, pembangun boleh mengira jumlah bilangan rekod yang akan dikembalikan sebelum menggunakan klausa LIMIT
.
<code class="language-sql">SELECT foo, count(*) OVER() AS full_count FROM bar WHERE <some condition=""> ORDER BY <some col=""> LIMIT <pagesize> OFFSET <offset>;</code>
Adalah penting untuk ambil perhatian bahawa pendekatan ini mungkin lebih mahal dari segi pengiraan daripada hanya mendapatkan set hasil terhad. Oleh itu, adalah disyorkan untuk menggunakan kaedah ini apabila kedua-dua kiraan lengkap dan set keputusan terhad diperlukan.
Jika kiraan penuh tidak diperlukan, terdapat cara lain untuk mendapatkan semula kiraan baris yang terjejas. PostgreSQL mengekalkan maklumat simpan kira dalaman yang boleh diakses oleh pelanggan. Dalam PHP, anda boleh menggunakan fungsi pg_num_rows
untuk tujuan ini. Selain itu, plpgsql menyediakan perintah GET DIAGNOSTICS
untuk mendapatkan semula kiraan baris.
Adalah penting untuk memahami susunan SELECT
pertanyaan dilaksanakan, yang mempengaruhi cara klausa LIMIT
dan OFFSET
digunakan. Klausa WHERE
menapis baris yang layak daripada jadual asas dan fungsi tetingkap digunakan pada subset yang ditapis.
Walaupun OFFSET
berguna untuk paging, ia menjadi semakin kurang cekap apabila bilangan baris dalam jadual bertambah. Sila pertimbangkan untuk menggunakan alternatif seperti memanfaatkan kursor atau menggunakan OFFSET
untuk mengoptimumkan pertanyaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Jumlah Kiraan Hasil Dengan Cekap Sebelum Menggunakan Klausa LIMIT dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!