Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengoptimumkan Penomboran MySQL Tanpa Membuat Dua Pertanyaan?

Bagaimana untuk Mengoptimumkan Penomboran MySQL Tanpa Membuat Dua Pertanyaan?

Susan Sarandon
Susan Sarandonasal
2024-12-06 08:47:101003semak imbas

How to Optimize MySQL Pagination Without Making Two Queries?

Penomboran dalam MySQL: Teknik Optimum Tanpa Pertanyaan Berganda

Penomboran, teknik asas untuk memaparkan set data yang besar dalam bahagian yang boleh diurus, selalunya melibatkan dua bahagian yang berasingan pertanyaan dalam MySQL. Satu pertanyaan mendapatkan semula jumlah hasil, manakala satu lagi mengehadkan hasil berdasarkan parameter penomboran.

Soalan Berganda: Pendekatan Konvensional

Secara tradisinya, penomboran dicapai melalui langkah berikut:

  1. Lakukan pertanyaan untuk mengira jumlah nombor daripada hasil:

    SELECT COUNT(*) FROM `table` WHERE `some_condition`
  2. Hadkan hasil untuk memaparkan halaman tertentu:

    SELECT `fields` FROM `table` WHERE `some_condition` LIMIT 0, 10

Had Pertanyaan Berganda

Walaupun pendekatan ini boleh dipercayai, ia mengalami perkara berikut had:

  • Dua pertanyaan: Ia memerlukan dua panggilan pangkalan data berasingan, yang berpotensi menjejaskan prestasi.
  • Caching: Caching kiraan boleh mengurangkan membimbangkan prestasi, tetapi ia memperkenalkan kerumitan tambahan.

Alternatif Teknik

Walaupun pertanyaan berganda merupakan teknik yang digunakan secara meluas, ia bukan satu-satunya pilihan untuk penomboran. Berikut ialah kaedah alternatif:

Menggunakan SQL_CALC_FOUND_ROWS dan FOUND_ROWS()

  1. Lakukan pertanyaan dengan klausa SQL_CALC_FOUND_ROWS:

    SELECT `fields` FROM `table` WHERE `some_condition` ORDER BY `field_name`
  2. Laksanakan PILIH FOUND_ROWS() untuk mendapatkan semula jumlah hasil:
  3. SELECT FOUND_ROWS()
Had SQL_CALC_FOUND_ROWS

    Prestasi:
  • Boleh menjadi lebih perlahan daripada pertanyaan berganda pada jadual besar kerana MySQL yang diketahui pepijat.
  • Pesanan mengikut:
  • Memerlukan klausa ORDER BY dalam pertanyaan awal.
Caching

Caching jumlah kiraan boleh meningkatkan prestasi dengan ketara untuk kedua-dua pertanyaan berganda dan teknik SQL_CALC_FOUND_ROWS. Dengan menyimpan kiraan dalam pangkalan data atau cache sementara, anda boleh mengelak daripada melaksanakan pertanyaan pengiraan berulang kali.

Memilih Teknik Optimal

Teknik penomboran terbaik untuk aplikasi anda bergantung atas pelbagai faktor, termasuk saiz set data, keperluan prestasi dan kehadiran kriteria pengisihan atau penapisan. Pertimbangkan garis panduan berikut:

Untuk set data kecil dan di mana prestasi tidak kritikal, pertanyaan berganda ialah pilihan yang mudah dan boleh dipercayai.
  • Untuk set data besar yang prestasi penting, caching kiraan boleh meningkatkan pertanyaan berganda dengan ketara.
  • Untuk penomboran dengan pengisihan atau penapisan, SQL_CALC_FOUND_ROWS ialah alternatif yang cekap untuk menggandakan bertanya.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Penomboran MySQL Tanpa Membuat Dua Pertanyaan?. 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