Ich habe ein Schema mit mehreren Ansichten. Ich muss die Ausführungspläne überprüfen, um sicherzustellen, dass die entsprechenden Indizes vorhanden sind und verwendet werden.
Wie mache ich das?
Ich würde lieber nicht kopieren und die Ausgabe von Paste show create view <viewname>
in explain
, zumal einige der Ansichten auf anderen Ansichten gebaut werden und dies wäre durchaus ein Schmerz sein.
mysql
performance
execution-plan
view
Matt Fenwick
quelle
quelle
select * from <view_name>
übereinstimmt?Antworten:
Das habe ich zuerst versucht:
Offensichtlich funktioniert das nicht - es ist das gleiche wie zu tun
describe view_name
.Scheint
select * from view_name
jedoch zu funktionieren:quelle
Verwenden Sie die Tabelle information_schema.views
Dadurch wird die EXPLAIN für alle Ansichten generiert
Dadurch wird EXPLAIN für alle Ansichten in der mydb-Datenbank generiert
Versuche es !!!
UPDATE 2012-03-22 11:30 EDT
@ MattFenwick, deine Antwort ist viel einfacher als meine. Hier ist ein Beispiel, das ich auf meinem PC mit MySQL 5.5.12 ausprobiert habe. Ich habe EXPLAIN sowohl für die SELECT-Version aus Ihrer Antwort als auch für die EXPLAIN-Version ausgeführt, die aus meiner Antwort generiert wurde:
Beide haben den gleichen EXPLAIN-Plan erstellt. Ich werde meine Antwort ändern, um Ihren Weg umzusetzen. Du bekommst eine +1 von mir, obwohl es der Einfachheit halber +2 ist. Sie sollten fortfahren und Ihre eigene Antwort auf diese Frage akzeptieren.
Hier ist ein interessantes Faktoid zu VIEWs in MySQL: Eine Ansicht wird an zwei Stellen in der Datenbank information_schema dargestellt
Dadurch wird die EXPLAIN für alle Ansichten generiert
oder
Dadurch wird EXPLAIN für alle Ansichten in der mydb-Datenbank generiert
oder
quelle