Penomboran yang cekap memerlukan mengetahui jumlah bilangan hasil untuk memaparkan kawalan penomboran dengan tepat. Kaedah konvensional melibatkan dua pertanyaan berasingan: satu untuk mengira semua hasil dan satu lagi untuk mengambil data halaman semasa. Pendekatan ini, bagaimanapun, boleh menjadi tidak cekap.
PostgreSQL menawarkan penyelesaian unggul yang memanfaatkan fungsi tetingkap (tersedia sejak versi 8.4). Fungsi COUNT(*) OVER()
membolehkan mendapatkan kedua-dua jumlah kiraan dan hasil penomboran dalam satu pertanyaan:
<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 kaedah ini, walaupun elegan, boleh memberi kesan kepada prestasi pada jadual yang sangat besar disebabkan oleh pengiraan kiraan baris penuh. Pertimbangan yang teliti terhadap pertukaran prestasi adalah perlu.
Untuk prestasi yang dipertingkatkan dengan set data yang besar, pertimbangkan alternatif ini:
GET DIAGNOSTICS
dan pg_num_rows
.OFFSET
pada jadual yang luas untuk meningkatkan kecekapan. Ini mungkin melibatkan strategi pengindeksan atau struktur pertanyaan alternatif.Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Jumlah Kiraan Hasil dengan Cekap dalam Pertanyaan Bernombor tanpa Berbilang Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!