Bolehkah MySQL Views Memanfaatkan Indeks untuk Pertanyaan?
Adalah tidak mudah bagi MySQL untuk menggunakan indeks untuk pertanyaan pada paparan. Walaupun mempunyai indeks pada jadual asas, pertanyaan paparan diproses secara berasingan, yang berpotensi membawa kepada ketidakcekapan.
Penyelesaian: Indeks Meliputi
Penyelesaian optimum ialah mencipta "indeks penutup " di atas meja bawah. Indeks ini harus termasuk lajur yang dirujuk dalam pertanyaan penentu pandangan dan mana-mana lajur yang digunakan untuk pengumpulan. Indeks penutup membenarkan MySQL untuk memenuhi pertanyaan paparan terus daripada indeks, memintas keperluan untuk mengakses halaman jadual asas.
Sebagai contoh, mengambil kira contoh yang disediakan dengan jadual skor tinggi, indeks penutup boleh:
CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score);
Dengan adanya indeks ini, MySQL boleh memanfaatkannya untuk pertanyaan paparan:
SELECT * FROM v_kobe_highscores WHERE happened_in = 2006;
Mengapa Paparan dalam MySQL Boleh Bermasalah
Tidak seperti beberapa pangkalan data lain, MySQL tidak "menolak" predikat dari pertanyaan luar ke dalam pertanyaan paparan. Sebaliknya, pertanyaan paparan dilaksanakan secara berasingan, mewujudkan jadual perantaraan yang mengandungi semua baris daripada definisi paparan. Pertanyaan luar kemudiannya digunakan pada jadual terbitan ini.
Proses ini boleh menyebabkan kemerosotan prestasi, terutamanya untuk paparan yang ditakrifkan merentas jadual besar.
Alternatif: Pertanyaan Kendiri Berindeks
Dalam sesetengah kes, mungkin lebih cekap untuk melaksanakan pertanyaan kendiri berbanding menggunakan paparan. Contohnya:
SELECT player , MAX(score) AS highest_score , happened_in FROM highscores WHERE player = 24 AND happened_in = 2006 GROUP BY player , happened_in;
Dengan indeks penutup yang sesuai pada jadual skor tinggi, pertanyaan ini boleh mendapatkan semula data yang diingini dengan cekap tanpa overhed untuk mencipta dan mewujudkan paparan.
Atas ialah kandungan terperinci Bolehkah MySQL Views Memanfaatkan Indeks untuk Pertanyaan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!