Mengapa penyataan MySQL SELECT saya dengan ORDER BY dan LIMIT perlahan pada set data yang besar, dan bagaimana saya boleh mempercepatkannya?

Linda Hamilton
Lepaskan: 2024-11-18 05:09:02
asal
159 orang telah melayarinya

Why is my MySQL SELECT statement with ORDER BY and LIMIT slow on a large dataset, and how can I speed it up?

Penyata MySQL Melaksanakan Perlahan-lahan dengan Set Data Besar

Apabila bekerja dengan pangkalan data yang besar, masa pelaksanaan pertanyaan boleh menjadi kebimbangan. Artikel ini membincangkan senario tertentu di mana pertanyaan pada jadual dengan lebih satu juta rekod mengambil masa lebih seminit untuk dilaksanakan.

Masalahnya

Pertanyaan berikut telah mengambil alih seminit untuk dilaksanakan, walaupun dengan lajur "id" yang diindeks:

SELECT *
FROM `ratings`
ORDER BY id
LIMIT 499500, 500;
Salin selepas log masuk

Jadual mengandungi kira-kira satu juta rekod, dan pertanyaan melibatkan pesanan mengikut lajur "id" dan mengehadkan keputusan kepada julat tertentu .

Analisis dan Penyelesaian

Selepas menyiasat pertanyaan dan struktur jadual, telah ditentukan bahawa masa pelaksanaan yang perlahan adalah disebabkan oleh penggunaan operasi "filesort". Ini berlaku apabila MySQL tidak dapat mencari indeks yang sesuai untuk digunakan untuk klausa ORDER BY dan perlu mengisih baris jadual dalam ingatan.

Untuk menyelesaikan isu ini, disyorkan untuk menggunakan klausa WHERE yang lebih selektif dan bukannya klausa WHERE. URUTAN MENGIKUT klausa. Dalam kes ini, pertanyaan berikut dilaksanakan dengan lebih pantas:

SELECT *
FROM `ratings`
WHERE id >= 499501
LIMIT 500;
Salin selepas log masuk

Pertanyaan ini menggunakan lajur "id" yang diindeks untuk mengecilkan baris yang hendak diisih, dengan ketara mengurangkan masa yang diperlukan untuk melaksanakan pertanyaan.

Pertimbangan Tambahan

Adalah penting untuk ambil perhatian bahawa menggunakan klausa WHERE dan bukannya klausa ORDER BY mungkin tidak selalu boleh dilakukan atau praktikal. Dalam kes sedemikian, pengoptimuman lain seperti mencipta indeks tambahan atau mengoptimumkan struktur pangkalan data mungkin diperlukan. Selain itu, kemungkinan kebuntuan juga harus diketepikan sebagai kemungkinan penyebab prestasi perlahan.

Atas ialah kandungan terperinci Mengapa penyataan MySQL SELECT saya dengan ORDER BY dan LIMIT perlahan pada set data yang besar, dan bagaimana saya boleh mempercepatkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan