ใช้information_schema.viewsตาราง
สิ่งนี้จะสร้างคำอธิบายสำหรับทุกมุมมอง
mysql -uroot -p -AN -e"select concat('explain ',view_definition) from information_schema.views" > /root/ExplainViews.sql
สิ่งนี้จะสร้างคำอธิบายสำหรับทุกมุมมองในฐานข้อมูล mydb
mysql -uroot -p -AN -e"select concat('explain ',view_definition) from information_schema.views where table_schema = 'mydb'" > /root/ExplainViews.sql
ให้มันลอง !!!
อัพเดท 2012-03-22 11:30 EDT
@ MattFenwick คำตอบของคุณง่ายกว่าของฉันมาก นี่คือตัวอย่างที่ฉันลองบนพีซีที่ใช้ MySQL 5.5.12 ฉันรันคำอธิบายทั้งคำว่า SELECT และคำอธิบายของคุณจากคำตอบของฉัน:
mysql> explain select * from bigjoin;
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
| 1 | SIMPLE | k | index | NULL | PRIMARY | 4 | NULL | 14 | Using index |
| 1 | SIMPLE | a | eq_ref | PRIMARY | PRIMARY | 4 | test.k.id_key | 1 | Using index |
| 1 | SIMPLE | b | ALL | NULL | NULL | NULL | NULL | 4 | |
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
3 rows in set (0.00 sec)
mysql> explain select `a`.`id_key` AS `id_key1`,`b`.`id_key` AS `id_key2` from ((`test`.`idlist` `k` left join `test`.`id_key_table` `a` on((`k`.`id_key` = `a`.`id_key`))) left join `test`.`new_keys_to_load` `b` on((`k`.`id_key` = `b`.`id_key`)));
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
| 1 | SIMPLE | k | index | NULL | PRIMARY | 4 | NULL | 14 | Using index |
| 1 | SIMPLE | a | eq_ref | PRIMARY | PRIMARY | 4 | test.k.id_key | 1 | Using index |
| 1 | SIMPLE | b | ALL | NULL | NULL | NULL | NULL | 4 | |
+----+-------------+-------+--------+---------------+---------+---------+---------------+------+-------------+
3 rows in set (0.00 sec)
mysql>
พวกเขาทั้งคู่สร้างแผนอธิบายที่เหมือนกัน ฉันจะเปลี่ยนคำตอบเพื่อใช้ในแบบของคุณ คุณได้รับ +1 จากฉันแม้ว่ามันจะเป็น +2 เพื่อความเรียบง่าย คุณควรไปข้างหน้าและยอมรับคำตอบของคุณเองในเรื่องนี้
นี่เป็นข้อเท็จจริงที่น่าสนใจเกี่ยวกับมุมมองใน MySQL: มุมมองถูกแสดงในสองตำแหน่งในฐานข้อมูล information_schema
สิ่งนี้จะสร้างคำอธิบายสำหรับทุกมุมมอง
mysql -uroot -p -AN -e"select concat('explain select * from ',table_schema,'.',table_name,';') from information_schema.tables WHERE engine IS NULL" > /root/ExplainViews.sql
หรือ
mysql -uroot -p -AN -e"select concat('explain select * from ',table_schema,'.',table_name,';') from information_schema.views" > /root/ExplainViews.sql
สิ่งนี้จะสร้างคำอธิบายสำหรับทุกมุมมองในฐานข้อมูล mydb
mysql -uroot -p -AN -e"select concat('explain select * from ',table_schema,'.',table_name,';') from information_schema.tables WHERE table_schema='mydb' AND engine IS NULL;" > /root/ExplainViews.sql
หรือ
mysql -uroot -p -AN -e"select concat('explain select * from ',table_schema,'.',table_name,';') from information_schema.views WHERE table_schema='mydb';" > /root/ExplainViews.sql