Mengapa MySQL Tidak Boleh Menggunakan Indeks untuk Pertanyaan Lihat?

Linda Hamilton
Lepaskan: 2024-11-11 04:05:02
asal
592 orang telah melayarinya

Why Can't MySQL Use Indexes for View Queries?

Tidakkah MySQL Boleh Menggunakan Indeks untuk Pertanyaan Paparan?

Walaupun menghadapi keraguan tentang keberkesanan pandangan, masalah yang anda hadapi timbul daripada ketidakupayaan pengoptimum untuk menolak predikat ke dalam pertanyaan paparan.

MySQL melaksanakan pertanyaan paparan secara berasingan, merealisasikan keputusan dalam jadual perantaraan "terdapat" (MyISAM) sebelum melaksanakan pertanyaan luar. Proses ini melangkau pertimbangan predikat daripada pertanyaan luar semasa pelaksanaan pertanyaan paparan.

Menangani Isu Prestasi

Untuk meningkatkan prestasi pertanyaan paparan anda, optimumkan struktur indeks:

Buat Penutup Indeks:

Tentukan indeks "meliputi" yang merangkumi semua lajur yang dirujuk dalam pertanyaan paparan. Dalam kes ini, cipta indeks berikut:

ON highscores (player, happened_in, score)
Salin selepas log masuk

Indeks ini akan membenarkan MySQL mengakses pertanyaan paparan dengan "Menggunakan indeks" dan mengelakkan "Menggunakan isor fail" yang lebih mahal.

Nilai Pertanyaan Kendiri:

Bandingkan pelan pelaksanaan pertanyaan pandangan anda dengan kendiri pertanyaan yang mempunyai tujuan yang sama:

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

Pertanyaan kendiri ini juga boleh menggunakan indeks penutup, tetapi ia menghapuskan overhed untuk mewujudkan jadual perantaraan.

Kesimpulan:

Kunci untuk mengoptimumkan pertanyaan paparan dalam MySQL terletak pada mereka bentuk indeks yang sesuai yang pengoptimum boleh memanfaatkan. Pertanyaan lihat pada dasarnya adalah pertanyaan berasingan yang diwujudkan sebelum dirujuk oleh pertanyaan luar. Memahami tingkah laku ini adalah penting untuk mengelakkan perangkap prestasi yang mungkin timbul apabila menggunakan paparan dalam MySQL.

Atas ialah kandungan terperinci Mengapa MySQL Tidak Boleh Menggunakan Indeks untuk Pertanyaan Lihat?. 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