Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL Perlahan untuk Meningkatkan Prestasi dan Mengurangkan I/O Cakera?
Mengoptimumkan Pertanyaan MySQL untuk Mengurangkan Masa Pelaksanaan dan Tulisan Cakera
Pertanyaan MySQL anda menghadapi masalah prestasi, mengambil masa beberapa minit untuk disiapkan dan menulis ke cakera semasa pelaksanaan. Ini boleh memberi kesan ketara kepada responsif halaman web anda. Untuk menangani perkara ini, kami akan meneroka penyelesaian yang melibatkan pemodelan data dan pengoptimuman indeks.
Pertanyaan perlahan yang anda nyatakan ialah:
SELECT * FROM poster_prodcat, poster_data, poster_categories WHERE poster_data.apnumber = poster_prodcat.apnumber AND poster_categories.apcatnum = poster_prodcat.apcatnum AND poster_prodcat.apcatnum='623' ORDER BY aptitle ASC LIMIT 0, 32
Menurut keluaran EXPLAIN, pertanyaan itu melaksanakan penuh imbasan jadual pada jadual poster_prodcat, yang mengandungi lebih 17 juta baris. Ini menyumbang kepada masa pelaksanaan yang berlebihan.
Untuk mengoptimumkan prestasi pertanyaan, kami boleh melaksanakan perubahan berikut:
Normalisasi dan Pengindeksan:
Berikut ialah contoh skema yang dikemas kini:
CREATE TABLE poster ( poster_id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL UNIQUE, PRIMARY KEY (poster_id) ) ENGINE=InnoDB; CREATE TABLE category ( cat_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL UNIQUE, PRIMARY KEY (cat_id) ) ENGINE=InnoDB; CREATE TABLE poster_category ( cat_id MEDIUMINT UNSIGNED NOT NULL, poster_id INT UNSIGNED NOT NULL, PRIMARY KEY (cat_id, poster_id), INDEX (poster_id) -- Clustered composite index ) ENGINE=InnoDB;
Setelah data dinormalisasi dan diindeks , pertanyaan harus berprestasi lebih pantas, mengurangkan masa pelaksanaan dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL Perlahan untuk Meningkatkan Prestasi dan Mengurangkan I/O Cakera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!