Rumah > pangkalan data > tutorial mysql > Mengapa pertanyaan MySQL saya dengan ORDER BY sangat perlahan?

Mengapa pertanyaan MySQL saya dengan ORDER BY sangat perlahan?

Susan Sarandon
Lepaskan: 2024-12-05 17:04:11
asal
237 orang telah melayarinya

Why is my MySQL query with ORDER BY so slow?

Perlahan Pertanyaan dengan Klausa ORDER BY

Pengguna pangkalan data MySQL telah menghadapi isu prestasi yang membingungkan berkaitan penggunaan klausa ORDER BY. Apabila ditambahkan pada pertanyaan kompleks dengan berbilang cantuman dan subkueri, masa pelaksanaan pertanyaan meningkat dengan ketara daripada milisaat kepada saat.

Satu kejadian khusus melibatkan pertanyaan yang mendapatkan semula data daripada tiga jadual dengan lebih kurang 40,000 baris dalam jadual terbesar. Tanpa klausa ORDER BY, pertanyaan berfungsi secara optimum. Walau bagaimanapun, apabila mana-mana lajur digunakan sebagai kriteria pengisihan, pertanyaan menjadi perlahan dengan beberapa urutan magnitud kepada sekitar 10 saat.

Punca isu ini terletak pada mekanisme pengoptimuman pangkalan data. Secara lalai, MySQL cuba mengoptimumkan pertanyaan dengan membuat jadual sementara atau menggunakan subkueri. Apabila klausa ORDER BY ditambah, pengoptimum salah mengira saiz jadual sementara yang diperlukan dan memperuntukkan jumlah memori yang tidak mencukupi. Akibatnya, pertanyaan kembali kepada algoritma pengisihan yang kurang cekap, yang mengakibatkan kelembapan yang diperhatikan.

Satu penyelesaian yang mungkin adalah dengan menulis semula pertanyaan menggunakan subkueri berkorelasi atau CTE (Ungkapan Jadual Biasa) untuk menentukan secara eksplisit langkah menyusun. Ini membolehkan pengoptimum menganggarkan saiz jadual sementara dengan betul, mengelakkan kelembapan.

Atas ialah kandungan terperinci Mengapa pertanyaan MySQL saya dengan ORDER BY sangat perlahan?. 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