Rumah > pangkalan data > tutorial mysql > SQL_CALC_FOUND_ROWS lwn. SELECT COUNT(*): Manakah Lebih Cepat untuk Penomboran?

SQL_CALC_FOUND_ROWS lwn. SELECT COUNT(*): Manakah Lebih Cepat untuk Penomboran?

DDD
Lepaskan: 2024-12-31 10:35:14
asal
947 orang telah melayarinya

SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Which is Faster for Pagination?

Perbandingan Prestasi: SQL_CALC_FOUND_ROWS lwn. SELECT COUNT(*)

Apabila mencari jumlah rekod dalam pertanyaan semasa menggunakan penomboran, dua kaedah muncul: SQL_CALC_FOUND_ROWS dan SELECT COUNT(*). Menentukan pendekatan optimum bergantung pada pelbagai faktor.

Kaedah 1: SQL_CALC_FOUND_ROWS

Kaedah ini menggunakan SQL_CALC_FOUND_ROWS dalam pertanyaan SELECT awal dan seterusnya menggunakan FOUND_ROWS() untuk mendapatkan semula jumlah kiraan baris. Sintaksnya adalah seperti berikut:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
Salin selepas log masuk

Kaedah 2: SELECT COUNT(*)

Sebagai alternatif, pertanyaan berasingan mengira baris menggunakan SELECT COUNT(*), selepas melaksanakan pertanyaan asal. Sintaksnya ialah:

SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
Salin selepas log masuk

Penilaian Prestasi

Prestasi setiap kaedah berbeza-beza berdasarkan faktor seperti ketersediaan indeks dan kerumitan pertanyaan. Satu analisis komprehensif oleh Blog Prestasi MySQL mencadangkan bahawa:

  • SQL_CALC_FOUND_ROWS secara amnya lebih perlahan daripada menjalankan dua pertanyaan, terutamanya jika indeks tidak dioptimumkan atau pertanyaan itu rumit.
  • Jurang prestasi melebar dengan peningkatan baris dikira.
  • Walau bagaimanapun, untuk pertanyaan dengan ungkapan atau subkueri yang kompleks, SQL_CALC_FOUND_ROWS mungkin mengatasi SELECT COUNT(*) disebabkan penggunaan indeks.

Akhirnya , pendekatan yang ideal bergantung pada konteks khusus dan keperluan aplikasi. Seperti yang dinyatakan dalam catatan Blog Prestasi, "Ia bergantung pada indeks anda dan faktor lain."

Atas ialah kandungan terperinci SQL_CALC_FOUND_ROWS lwn. SELECT COUNT(*): Manakah Lebih Cepat untuk Penomboran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan