Ist die Verwendung von MySQL-Ansichten eine schädliche Praxis?
Trotz gegenteiliger Ratschläge können Ansichten tatsächlich Indexverbesserungen nutzen, wenn sie in MySQL verwendet werden . Es stellt sich die Frage, wie eine solche Funktionalität umgesetzt werden kann.
Die Antwort: Geeignete Indizes bereitstellen
Die Lösung liegt darin, einen Index anzubieten, den MySQL aktiv nutzen kann. In diesem Fall ist ein „abdeckender“ Index am besten geeignet, wie zum Beispiel:
CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score)
Wenn dieser Index vorhanden ist, sollte der MySQL-Optimierer ihn für die SELECT-Abfrage verwenden können, was zu einem „Verwendet Index“ führt "-Deklaration, die dem Prädikat WHERE player = 24 zuzuschreiben ist.
Es ist jedoch wichtig anzuerkennen, dass MySQL aus diesem Grund wahrscheinlich keinen Passed_in-Index für Ansichtsabfragen verwenden wird sein Verhalten, innere „Ansichtsabfrage“-Ausführungen von äußeren Abfragen zu trennen. Folglich wird der für „happened_in“ definierte Index während der Abfrageerstellungsphase nicht verwendet.
Leistungsoptimierung mit einem Covering-Index
Um die Leistung der Ansichtsabfrage zu optimieren, wird ein „Covering Index“, der alle in der Abfrage referenzierten Spalten enthält (z. B. ON-Highscores (Spieler, passiert_in, Punktestand)), wird empfohlen. Diese Art von Index ermöglicht den direkten Datenabruf von Indexseiten, ohne dass eine Seitensuche in der zugrunde liegenden Tabelle erforderlich ist, was zu einer Zugriffsmethode „Index verwenden“ führt.
Vergleich mit einer eigenständigen Abfrage ohne abgeleitete Tabelle
Betrachten Sie zum Vergleich eine eigenständige Abfrage, die der Ansichtsabfrage entspricht:
SELECT player, MAX(score) AS highest_score, happened_in FROM highscores WHERE player = 24 AND happened_in = 2006 GROUP BY player, happened_in
Eine Abdeckung Der Index für diese Abfrage (z. B. ON-Highscores (Spieler, passiert_in, Punktestand)) kann ebenfalls verwendet werden, wodurch die Notwendigkeit einer „abgeleiteten“ Zwischentabelle entfällt.
Vorsicht und Überlegungen
Obwohl Ansichten nicht grundsätzlich schädlich sind, ist es wichtig zu verstehen, wie MySQL Ansichtsabfragen verarbeitet, was sich von den Ansätzen anderer Datenbanken unterscheidet. Dieses Wissen ermöglicht es Entwicklern, das Potenzial von Ansichten effektiv zu nutzen und gleichzeitig Leistungsprobleme zu mindern.
Das obige ist der detaillierte Inhalt vonKönnen MySQL-Ansichten Indexverbesserungen für eine verbesserte Leistung nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!