Bolehkah MySQL Views Memanfaatkan Indeks untuk Pertanyaan Cekap?

Susan Sarandon
Lepaskan: 2024-11-10 00:47:02
asal
740 orang telah melayarinya

Can MySQL Views Leverage Indexes for Efficient Queries?

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);
Salin selepas log masuk

Dengan adanya indeks ini, MySQL boleh memanfaatkannya untuk pertanyaan paparan:

SELECT * FROM v_kobe_highscores WHERE happened_in = 2006;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan