Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan MySQL untuk Menggunakan Indeks untuk Pertanyaan Lihat?
Mendapatkan MySQL untuk Menggunakan Indeks untuk Pertanyaan Lihat
Pertanyaan: Bagaimanakah cara saya menggalakkan MySQL memanfaatkan indeks untuk pertanyaan paparan?
Jawapan: Walaupun menggunakan paparan dalam MySQL mungkin tidak sesuai, MySQL boleh menggunakan indeks untuk pertanyaan paparan apabila disediakan dengan struktur indeks yang sesuai.
Penjelasan Terperinci:
Pertanyaan paparan MySQL berbeza daripada pangkalan data lain kerana pengoptimum tidak "menolak" predikat daripada pertanyaan luar ke dalam pertanyaan paparan. Dalam kes ini, penapis pertanyaan luar menapis pada happen_in, tetapi MySQL tidak menggunakan penapis ini apabila melaksanakan pertanyaan paparan.
Akibatnya, pertanyaan paparan diproses secara berasingan, mewujudkan jadual sementara (jadual terbitan) . Apabila pertanyaan luar dijalankan, ia menggunakan jadual terbitan sebagai sumber baris, menilai happen_in = 2006 predikat kemudian.
Untuk meningkatkan prestasi, indeks penutup boleh ditakrifkan:
CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score)
Indeks ini termasuk semua lajur yang dirujuk dalam pertanyaan paparan, dengan pemain sebagai lajur utama (predikat kesamaan) diikuti dengan happen_in (GROUP BY). Menyertakan skor menjadikan indeks sebagai indeks penutup, membolehkan MySQL mendapatkan semula semua data yang diperlukan daripada indeks sahaja.
Sebagai alternatif, pertimbangkan untuk menggunakan pertanyaan kendiri yang tidak menggunakan jadual terbitan, yang boleh memberikan prestasi yang lebih baik dalam beberapa kes :
SELECT player, MAX(score) AS highest_score, happened_in FROM highscores WHERE player = 24 AND happened_in = 2006 GROUP BY player, happened_in
Dengan pengubahsuaian ini dan indeks penutup yang sesuai, MySQL seharusnya dapat mengoptimumkan pertanyaan paparan, meningkatkan prestasi dengan ketara dengan memanfaatkan indeks yang tersedia.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan MySQL untuk Menggunakan Indeks untuk Pertanyaan Lihat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!