Rumah >pangkalan data >tutorial mysql >Bagaimanakah Penstrukturan Semula Pangkalan Data Boleh Mengoptimumkan Pertanyaan MySQL yang Lambat dan Menghapuskan I/O Cakera?
Mengoptimumkan Pertanyaan MySQL untuk Mengurangkan Masa Pelaksanaan dan Menghapuskan Cakera I/O
Dalam senario aplikasi web biasa, prestasi pertanyaan pangkalan data adalah penting untuk mengekalkan pengalaman pengguna yang responsif. Artikel ini menangani pertanyaan MySQL khusus yang mempamerkan masa pelaksanaan yang perlahan, mengakibatkan prestasi tapak web yang lemah.
Pertanyaan yang dipersoalkan menyertai tiga jadual: "poster_data," "poster_categories" dan "poster_prodcat." Ia bertujuan untuk mendapatkan semula data daripada jadual berdasarkan syarat tertentu pada jadual "poster_prodcat". Pelan pelaksanaan pertanyaan mendedahkan penglibatan jadual "poster_prodcat" dan penulisannya pada cakera, menunjukkan pengambilan data yang tidak cekap.
Untuk menangani isu prestasi, kami meneroka pendekatan alternatif yang melibatkan penstrukturan semula pangkalan data dan pertanyaan. Khususnya, kami mencipta jadual baharu bernama "poster," "kategori" dan "poster_category." Jadual "poster_category" telah direka bentuk dengan indeks komposit berkelompok pada lajur (cat_id, poster_id).
Dengan skema baharu ini, kami menulis semula pertanyaan asal seperti berikut:
SELECT p.*, c.* FROM poster_category pc INNER JOIN category c ON pc.cat_id = c.cat_id INNER JOIN poster p ON pc.poster_id = p.poster_id WHERE pc.cat_id = 623 ORDER BY p.name LIMIT 32;
The JELASKAN pelan untuk pertanyaan yang ditulis semula mendedahkan peningkatan yang ketara dalam prestasi. Pertanyaan kini menggunakan indeks dengan berkesan, mengurangkan keperluan untuk cakera I/O dan meminimumkan masa pelaksanaan.
Atas ialah kandungan terperinci Bagaimanakah Penstrukturan Semula Pangkalan Data Boleh Mengoptimumkan Pertanyaan MySQL yang Lambat dan Menghapuskan I/O Cakera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!