Apabila berurusan dengan jadual MySQL yang besar, mengoptimumkan prestasi pertanyaan adalah penting. Menambah indeks pada lajur yang berkaitan ialah teknik utama untuk mempercepatkan pertanyaan carian. Artikel ini meneroka senario biasa di mana carian tidak diindeks boleh memperlahankan pelaksanaan pertanyaan dengan ketara.
Pertimbangkan jadual dengan indeks utama pada medan ID. Walaupun indeks ini menyediakan carian yang cekap berdasarkan ID, ia goyah apabila mencari mengikut medan lain. Contohnya, pertanyaan untuk mendapatkan semula baris berdasarkan medan product_id mungkin berprestasi buruk jika medan ini tidak diindeks.
Dalam contoh yang disediakan, medan product_id telah diindeks, tetapi keputusan pertanyaan EXPLAIN menunjukkan tiada indeks digunakan. Ini boleh berlaku jika jenis data medan berbeza daripada jenis nilai yang ditentukan dalam pertanyaan.
Dalam kes tertentu, medan ID disimpan sebagai integer ( INT), manakala medan product_id disimpan sebagai rentetan (VARCHAR). Membandingkan integer dengan rentetan boleh membawa kepada prestasi pertanyaan yang lemah dalam MySQL. Untuk menyelesaikan isu ini, pastikan nilai perbandingan dalam pertanyaan sepadan dengan jenis data medan diindeks.
Untuk mencipta indeks pada medan product_id dan mengoptimumkan pertanyaan, laksanakan pernyataan berikut:
ALTER TABLE `table` ADD INDEX `product_id_index` (`product_id`)
Selain itu, keluarkan petikan di sekitar nilai integer dalam pertanyaan:
SELECT * FROM table WHERE product_id = 1;
Dengan menangani isu ini, prestasi pertanyaan seharusnya meningkat dengan ketara. Indeks adalah penting untuk mendapatkan semula data yang cekap, terutamanya apabila berurusan dengan jadual besar. Memadankan jenis data dan memastikan indeks tersedia boleh meningkatkan prestasi pertanyaan dalam MySQL dengan sangat baik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL dengan Mengindeks dan Menggunakan Jenis Data dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!