Saya punya skema dengan sejumlah tampilan. Saya perlu memeriksa rencana eksekusi untuk memastikan indeks yang sesuai sudah ada dan digunakan.
Bagaimana saya melakukan ini?
Saya lebih suka tidak perlu menyalin dan menempelkan output dari show create view <viewname>
ke explain
, terutama karena beberapa pandangan dibangun di atas pandangan lain dan ini akan sangat menyebalkan.
mysql
performance
execution-plan
view
Matt Fenwick
sumber
sumber
select * from <view_name>
akan cocok?Jawaban:
Inilah yang pertama kali saya coba:
Jelas ini tidak berhasil - sama seperti melakukan
describe view_name
.Namun,
select * from view_name
tampaknya berhasil:sumber
Gunakan tabel information_schema.views
Ini akan menghasilkan EXPLAIN untuk semua tampilan
Ini akan menghasilkan EXPLAIN untuk semua tampilan di database mydb
Cobalah !!!
UPDATE 2012-03-22 11:30 EDT
@ MattFenwick, jawaban Anda jauh lebih sederhana daripada saya. Berikut adalah contoh yang saya coba pada PC saya yang menjalankan MySQL 5.5.12. Saya menjalankan EXPLAIN pada versi SELECT dari jawaban Anda dan EXPLAIN yang dihasilkan dari jawaban saya:
Mereka berdua menghasilkan rencana JELASKAN yang sama. Saya akan mengubah jawaban saya untuk menerapkan cara Anda. Anda mendapatkan +1 dari saya meskipun itu +2 untuk kesederhanaan. Anda harus melanjutkan dan menerima jawaban Anda sendiri untuk yang satu ini.
Berikut ini adalah fakta menarik tentang TAMPILAN di MySQL: Tampilan diwakili di dua tempat di database information_schema
Ini akan menghasilkan EXPLAIN untuk semua tampilan
atau
Ini akan menghasilkan EXPLAIN untuk semua tampilan di database mydb
atau
sumber