Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan MySQL untuk Menggunakan Indeks untuk Pertanyaan Lihat?

Bagaimanakah Saya Boleh Mendapatkan MySQL untuk Menggunakan Indeks untuk Pertanyaan Lihat?

Barbara Streisand
Barbara Streisandasal
2024-11-12 01:19:02759semak imbas

How Can I Get MySQL to Use Indices for View Queries?

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!

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