Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Kiraan Baris dengan Cekap dalam Pertanyaan MySQL Berpenomboran dengan SQL_CALC_FOUND_ROWS?

Bagaimana untuk Mendapatkan Kiraan Baris dengan Cekap dalam Pertanyaan MySQL Berpenomboran dengan SQL_CALC_FOUND_ROWS?

Barbara Streisand
Barbara Streisandasal
2024-11-01 03:58:28344semak imbas

How to Efficiently Get Row Count in Paginated MySQL Queries with SQL_CALC_FOUND_ROWS?

Menggunakan SQL_CALC_FOUND_ROWS untuk Mendapatkan Kiraan Baris Walaupun LIMIT

Apabila melaksanakan pertanyaan MySQL yang kompleks dengan penomboran (klausa "LIMIT"), mendapatkan jumlah kiraan baris mungkin mencabar. Menjalankan pertanyaan dua kali, sekali tanpa klausa LIMIT untuk jumlah kiraan, boleh menjadi tidak cekap.

Nasib baik, MySQL memperkenalkan pilihan SQL_CALC_FOUND_ROWS, yang membolehkan anda mengira jumlah kiraan baris semasa masih menggunakan klausa LIMIT. Begini caranya:

  1. Tambah SQL_CALC_FOUND_ROWS pada Pertanyaan Utama Anda:
    Selepas klausa SELECT, tambah SQL_CALC_FOUND_ROWS pada pertanyaan utama anda.
  2. Lakukan Pertanyaan Kedua untuk Mendapatkan Kiraan Baris:
    Jalankan pertanyaan kedua menggunakan fungsi FOUND_ROWS() untuk mendapatkan semula jumlah kiraan baris.

Contoh Pertanyaan:

<code class="sql">-- Main query with SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

-- Second query to get row count
SELECT FOUND_ROWS();</code>

Batasan dan Alternatif:

Walaupun SQL_CALC_FOUND_ROWS menyediakan penyelesaian yang mudah, ambil perhatian bahawa penggunaannya ditamatkan dalam MySQL 8.0.17. Dalam kebanyakan kes, menjalankan pertanyaan dua kali masih lebih pantas.

Sebagai alternatif, MySQL 8.0 memperkenalkan pilihan dioptimumkan berikut untuk mendapatkan kiraan baris:

  • ROW_COUNT() Fungsi: Mengembalikan bilangan baris yang dikembalikan oleh pertanyaan sebelumnya.
  • COUNT() Fungsi: Gunakan COUNT(*) sebagai subquery untuk mengira kiraan baris.

Dengan menggunakan teknik ini, pembangun boleh mendapatkan semula jumlah baris dengan cekap dalam pertanyaan MySQL bernombor mereka tanpa menjejaskan kelajuan atau prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kiraan Baris dengan Cekap dalam Pertanyaan MySQL Berpenomboran dengan SQL_CALC_FOUND_ROWS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn