Optimumkan pertanyaan bernombor: tentukan bilangan baris sebelum menggunakan LIMIT
Dalam pertanyaan halaman pangkalan data, anggaran tepat jumlah bilangan halaman adalah penting untuk memaparkan navigasi halaman. Pendekatan tradisional biasanya memerlukan melaksanakan dua pertanyaan: satu menggunakan fungsi COUNT() untuk menentukan jumlah bilangan hasil dan satu lagi menggunakan klausa LIMIT untuk mendapatkan semula hasil bagi halaman tertentu.
Penyelesaian yang cekap: gunakan fungsi tetingkap
Versi PostgreSQL moden (8.4 dan ke atas) menyediakan kaedah yang lebih cekap melalui fungsi tetingkap. Dengan menambahkan ungkapan COUNT(*) OVER() dengan klausa PARTITION, pertanyaan boleh mengira jumlah bilangan baris sebelum menggunakan klausa LIMIT, seperti ditunjukkan di bawah:
<code class="language-sql">SELECT foo, COUNT(*) OVER () AS full_count FROM bar WHERE condition ORDER BY col LIMIT pagesize OFFSET offset;</code>
Kelebihan pendekatan ini ialah keupayaan untuk mendapatkan kedua-dua jumlah kiraan dan keputusan terhad dalam satu pertanyaan. Walau bagaimanapun, perlu diambil perhatian bahawa apabila full_count jauh lebih besar daripada nilai OFFSET LIMIT, kos pengiraan kaedah ini mungkin lebih tinggi daripada kaedah tradisional.
Cara alternatif untuk mendapatkan kiraan
Jika isu kecekapan lebih penting daripada satu pertanyaan, kaedah lain untuk mendapatkan bilangan baris yang terjejas wujud:
Dengan mempertimbangkan penyelesaian ini, pembangun boleh mengoptimumkan strategi penomboran mereka, memastikan perolehan semula data yang cekap dan pengalaman penomboran yang lancar untuk pengguna.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jumlah Kiraan Baris dengan Cekap untuk Penomboran dalam PostgreSQL Tanpa Berbilang Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!