Ansichten wurden in MySQL 5.0 und höher eingeführt. Eine Ansicht ist eigentlich eine virtuelle Datentabelle, die selbst keine Daten speichert. Die Daten dieser virtuellen Tabelle stammen tatsächlich aus dem Ergebnis der SQL-Abfrage, die auf die Ansicht zugreift. MySQL behandelt Ansichten auf ähnliche Weise wie Tabellen und dieser Ansatz kann verwendet werden, um viele Anforderungen zu erfüllen. Ansichten und Tabellen teilen sich in MySQL denselben Namespace, MySQL behandelt sie jedoch unterschiedlich. Ansichten haben beispielsweise keine Trigger und Sie können Ansichten nicht mit DROP TABLE entfernen. Im Folgenden wird die Funktionsweise von Ansichten anhand der Beispieldatenbank „World“ veranschaulicht. CREATE VIEW Ozeanien AS SELECT * FROM Land WHERE Kontinent = 'Ozeanien' MIT PRÜFOPTION; Die einfachste Möglichkeit, eine Ansicht zu implementieren, besteht darin, eine SELECT-Abfrage auszuführen und die Ergebnisse in eine temporäre Tabelle einzufügen. Anschließend können Sie überall, wo die Ansicht angezeigt wird, auf diese temporäre Tabelle verweisen. Beispielsweise die folgende Abfrage: SELECT Code, Name FROM Ozeanien WHERE Name = 'Australien'; Das Folgende ist eine mögliche Form des Servers, der die obige Anweisung ausführt (der Name der temporären Tabelle ist beliebig und der tatsächliche interne Inhalt ist unbekannt): ERSTELLEN SIE TEMPORÄRE TABELLE TMP_Oceania_123 AS SELECT * FROM Land WHERE Kontinent = ‚Ozeanien‘; SELECT Code, Name FROM TMP_Oceania_123 WHERE NAME = 'Australien'; Diese Form hat offensichtlich Leistungsprobleme. Am besten ist es, die Verteilungsabfrage von Ansichten und Abfragen in eine SQL-Anweisung zu ändern, wie unten gezeigt: Wählen Sie Code, Name aus Land WO Kontinent = ‚Ozeanien‘ UND Name = ‚Australien‘; In MySQL werden zwei Algorithmen verwendet, die MERGE und TEMTABLE genannt werden, und der MERGE-Algorithmus wird so oft wie möglich verwendet. MySQL kann sogar verschachtelte Ansichten zusammenführen. Die folgende Abbildung zeigt den Unterschied zwischen den beiden Algorithmen: MySQL verwendet den TEMPTABLE-Algorithmus, wenn eine Ansicht GROUP BY, DISTINCT, Aggregatfunktionen, UNION, Unterabfragen oder andere Tabellen enthält, die keine Eins-zu-eins-Beziehung haben. Wenn Sie wissen möchten, ob eine Ansicht MERGE oder TEMPTABLE verwendet, können Sie dies mit dem Befehl EXPLAIN überprüfen: EXPLAIN SELECT * FROM <Ansichtsname>; Wenn in select_type DERIVED enthalten ist, bedeutet dies, dass der TEMPTABLE-Algorithmus verwendet wird. Wenn die Generierung der verborgenen abgeleiteten Tabellen teuer ist, wird die Ausführung von EXPLAIN daher sehr ineffizient und langsam, da es die abgeleiteten Tabellen tatsächlich ausführen und erstellen muss. Dieser Algorithmus ist eine Eigenschaft der Ansicht und wird vom Abfragetyp nicht beeinflusst. Wenn beispielsweise beim Erstellen einer Ansicht ein Algorithmus angegeben wird, wird der Algorithmus für nachfolgende Abfragen dieser Ansicht nicht geändert, selbst wenn Optimierungspotenzial besteht: ERSTELLEN SIE ALGORITHMUS=TEMPTABLE VIEW v1 AS WÄHLEN SIE * AUS Land; Aktualisierbare AnsichtenAktualisierbare Ansichten können die zugrunde liegende Tabelle aktualisieren, die durch die Ansicht verborgen ist. Solange die angegebenen Bedingungen zutreffen, können Sie UPDATE-, DELETE- und sogar INSERT-Operationen verwenden, genau wie bei der Bedienung normaler Tabellen. Beispielsweise sind die folgenden Operationen gültig: UPDATE Ozeanien SET Bevölkerung = Bevölkerung * 1,1 WHERE NAME = ‚Australien‘; Wenn die Ansicht GROUP BY, UNION, Aggregatfunktionen oder andere Konzepte enthält, kann die Ansicht nicht aktualisiert werden. Alle Ansichten, die den TEMPTABLE-Algorithmus verwenden, können nicht aktualisiert werden. Mit der Klausel CHECK OPTION wird sichergestellt, dass alle über die Ansicht geänderten Datenzeilen auch nach der Änderung weiterhin der WHERE-Bedingung der Ansicht entsprechen. Wenn im obigen Beispiel beispielsweise eine Zeile mit einem anderen Kontinentwert eingefügt wird, meldet der Server einen Fehler. Leistung der AnsichtenViele Leute denken nicht daran, dass die Leistung durch den Einsatz von Ansichten verbessert werden kann, in manchen Fällen ist dies jedoch möglich. Darüber hinaus können Views auch an anderen Stellen zur Performance-Verbesserung eingesetzt werden. So kann beispielsweise bei einem Neuaufbau der Tabellenstruktur der View der geänderten Datentabelle unverändert weiterverwendet werden. Sie können Ansichten auch verwenden, um die Berechtigungskontrolle für Felder zu implementieren, ohne den Aufwand für die Erstellung von Spaltenberechtigungen zu benötigen: Erstellen Sie eine Ansicht „public.employeeinfo AS“ SELECT Vorname, Nachname – ohne ID-Nummer FROM private.employeeinfo; GRANT SELECT ON public.* an öffentlichen_Benutzer; Die Leistung von Ansichten, die den TEMPTABLE-Algorithmus verwenden, kann sehr schlecht sein (obwohl sie wahrscheinlich besser ist als die entsprechende SQL-Abfrage). Diese Ansicht bietet nicht viel Raum für Optimierungen. Entwickler werden durch Ansichten unter Umständen irrigt, weil sie denken, sie seien einfach, obwohl sie in Wirklichkeit sehr komplex sind. Wenn der Entwickler die Komplexität von Ansichten nicht versteht, wird er den Unterschied zwischen Ansichten und gewöhnlichen Tabellenabfragen nicht bemerken. Wenn Sie den Befehl EXPLAIN verwenden, werden unter Umständen Hunderte von Zeilen mit Analyseergebnissen ausgegeben. Dies liegt daran, dass die Abfrage, die eine Datentabelle zu sein scheint, in Wirklichkeit eine Ansicht ist und die Ansicht auf andere Datentabellen oder sogar andere Ansichten verweisen kann. Die Verwendung von Ansichten zur Leistungsverbesserung erfordert sorgfältige Analyse und Tests. Sogar Ansichten mit dem MERGE-Algorithmus können zusätzlichen Overhead verursachen und die Auswirkungen auf die Leistung sind schwer vorherzusagen. Ansichten verwenden in MySQL tatsächlich einen anderen Optimierungsansatz. In Szenarien mit hoher Parallelität können Ansichten dazu führen, dass der Abfrageoptimierer viel Zeit mit Planung und Statistik verbringt und es kann sogar zu Verzögerungen auf der Serverseite kommen. Zu diesem Zeitpunkt müssen Sie normales SQL verwenden, um die Ansicht zu ersetzen. Einschränkungen der AnsichtenMySQL unterstützt im Gegensatz zu anderen Datenbankservern keine physischen Ansichten (physische Ansichten sind Ansichten, die Ergebnisse in einer unsichtbaren Tabelle generieren und speichern und regelmäßig aktualisiert werden, um die Ansicht aus den Quelldaten zu aktualisieren). MySQL unterstützt außerdem keine Indizes für Ansichten. MySQL behält außerdem nicht das ursprüngliche SQL der Ansicht bei. Wenn wir die Ansicht bearbeiten, indem wir den Befehl SHOW CREATE VIEW ausführen und das zurückgegebene Ergebnis-SQL ändern, werden wir feststellen, dass das Ergebnis sehr merkwürdig ist. Das Abfrage-SQL wird entsprechend der Spezifikation erweitert und in ein internes Format ohne Formatierung, Kommentare und Einrückungen verpackt. Oben finden Sie eine detaillierte Analyse des Prinzips der MySQL-Ansicht (Ansicht). Weitere Informationen zum Prinzip der MySQL-Ansicht (Ansicht) finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Das Erlebnis gestalten: Was auf dem Knopf liegt
>>: CSS zum Erzielen einer Schließen-Schaltfläche zum Vergrößern und Verkleinern (Beispielcode)
1. Einleitung Oracle hat MySQL 8.0GA veröffentlic...
In diesem Artikelbeispiel wird der spezifische Co...
1. Installieren Sie libfastcommon-1.0.43. Das Ins...
Inhaltsverzeichnis Array-Destrukturierungszuweisu...
Vorwort Was ist Datentypkonvertierung? Der Standa...
Die Grundlagen der MySQL-Wissenspunkte für die Co...
Dieser Statuscode gibt Auskunft über den Status d...
login.html-Teil: <!DOCTYPE html> <html l...
Drei Möglichkeiten, CSS einzuführen 1. Inline-Sti...
In diesem Artikel untersuchen wir, warum async/aw...
Nach dem Einrichten des MySQL-Master-Slaves wisse...
prune Um diesen Befehl verwenden zu können, müsse...
Phänomen Bei der Verwendung von Apache Spark 2.x ...
Inhaltsverzeichnis 1. Datenbankbetrieb 2. Datenty...
Standardmäßig unterscheidet MySQL unter Linux zwi...