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;
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;
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!