Dalam pertanyaan pangkalan data, menentukan jumlah bilangan keputusan sebelum menggunakan LIMIT adalah penting untuk penomboran. Pada masa ini, pendekatan biasa melibatkan menjalankan pertanyaan dua kali: sekali untuk mengira semua hasil dan sekali lagi dengan had untuk mendapatkan semula halaman yang dikehendaki. Walau bagaimanapun, kaedah ini boleh menjadi tidak cekap.
Nasib baik, PostgreSQL 8.4 memperkenalkan penyelesaian yang lebih cekap: fungsi tetingkap. Dengan menggunakan fungsi tetingkap, anda boleh mendapatkan kedua-dua jumlah kiraan hasil dan keputusan terhad dalam satu pertanyaan.
SELECT foo , count(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
Perhatikan bahawa walaupun kaedah ini memberikan maklumat yang diingini, ia boleh menjadi mahal dari segi pengiraan, kerana semua baris mesti diproses walaupun ia akan dikecualikan oleh LIMIT.
Memahami urutan peristiwa dalam pertanyaan SELECT boleh membantu memahami cara fungsi tetingkap beroperasi. Susunan operasi dalam Postgres adalah seperti berikut:
Selain fungsi tetingkap, terdapat kaedah alternatif untuk mendapatkan semula kiraan baris yang terjejas:
Kaedah ini menyediakan kiraan baris yang dipengaruhi oleh pertanyaan dan bukannya kiraan penuh sebelum permohonan LIMIT.
Sumber berkaitan:
Atas ialah kandungan terperinci Bagaimana Mendapatkan Jumlah Kiraan Baris dengan Cekap Sebelum Memohon LIMIT dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!