Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan MySQL Saya pada Meja Besar Sangat Lambat, dan Bagaimana Saya Boleh Mengoptimumkannya?

Mengapa Pertanyaan MySQL Saya pada Meja Besar Sangat Lambat, dan Bagaimana Saya Boleh Mengoptimumkannya?

DDD
DDDasal
2024-11-24 02:49:09270semak imbas

Why is My MySQL Query on a Large Table So Slow, and How Can I Optimize It?

Pengoptimuman Pertanyaan MySQL untuk Jadual Besar dengan Masa Pelaksanaan Lambat

Pertanyaan MySQL anda mengambil masa lebih seminit untuk dilaksanakan kerana ia tidak mempunyai indeks yang cekap untuk mengoptimumkan perolehan semula data. Saiz jadual yang besar, terutamanya lebih 1 juta rekod, memburukkan lagi masalah.

Mengindeks jadual pada lajur id adalah penting untuk mempercepatkan pertanyaan yang melibatkan pengisihan mengikut id. Walau bagaimanapun, berdasarkan maklumat yang diberikan, nampaknya pengindeksan sahaja tidak mencukupi.

Berikut ialah beberapa cadangan untuk meningkatkan prestasi pertanyaan:

Gunakan Pertanyaan Julat dengan Klausa WHERE

Daripada menggunakan LIMIT untuk mendapatkan julat rekod tertentu, pertimbangkan untuk menggunakan klausa WHERE dengan pengendali hubungan. Sebagai contoh, pertanyaan berikut menggunakan pertanyaan julat untuk memilih rekod dengan nilai id yang lebih besar daripada atau sama dengan 499501 dan mengehadkan hasil kepada 500 baris:

select * from `ratings` where id >= 499501 limit 500;

Pertanyaan ini harus berprestasi lebih pantas kerana ia memanfaatkan indeks yang diindeks. lajur id untuk mengesan rekod yang dikehendaki dengan cekap.

Jelaskan Pelan Pertanyaan

Untuk menyelesaikan masalah selanjutnya, laksanakan pertanyaan EXPLAIN untuk mendapatkan cerapan tentang pelan pelaksanaan pertanyaan. Ini akan memberikan butiran tentang jenis pertanyaan, indeks yang digunakan dan anggaran bilangan baris untuk diimbas.

explain select * from `ratings` where id >= 499501 limit 500;

Singkirkan Kebuntuan

Kebuntuan berlaku apabila dua atau lebih transaksi serentak menunggu antara satu sama lain untuk melepaskan kunci, dengan berkesan menghalang sama ada daripada meneruskan. Walaupun maklumat yang diberikan tidak mencadangkan kebuntuan sebagai punca yang mungkin, ia patut dipertimbangkan.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Saya pada Meja Besar Sangat Lambat, dan Bagaimana Saya Boleh Mengoptimumkannya?. 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