452 Stimmen

Ist eine Ansicht schneller als eine einfache Abfrage?

Ist ein

select *  from myView

schneller als die Abfrage selbst, um die Ansicht zu erstellen (um die gleiche Ergebnismenge zu erhalten):

select * from ([query to create same resultSet as myView])

?

Es ist mir nicht ganz klar, ob die Ansicht eine Art Zwischenspeicherung verwendet, die sie im Vergleich zu einer einfachen Abfrage schneller macht.

6voto

Otávio Décio Punkte 72052

Es kann schneller sein, wenn Sie eine materialisierte Ansicht ( mit Schemabindung ). Nicht-materialisierte Ansichten werden genauso ausgeführt wie die normale Abfrage.

4voto

E.J. Brennan Punkte 43746

Meines Erachtens war vor einiger Zeit eine Ansicht schneller, weil SQL Server einen Ausführungsplan speichern und dann einfach verwenden konnte, anstatt zu versuchen, einen Plan im laufenden Betrieb zu erstellen. Ich denke, dass der Leistungsgewinn heutzutage wahrscheinlich nicht mehr so groß ist wie früher, aber ich würde vermuten, dass es eine marginale Verbesserung durch die Verwendung der Ansicht gibt.

2voto

Tony Andrews Punkte 125904

Ich würde erwarten, dass die beiden Abfragen identisch funktionieren. Eine Ansicht ist nichts anderes als eine gespeicherte Abfragedefinition, es gibt keine Zwischenspeicherung oder Speicherung von Daten für eine Ansicht. Der Optimierer wird Ihre erste Abfrage effektiv in Ihre zweite Abfrage umwandeln, wenn Sie sie ausführen.

2voto

Dasboot Punkte 21

Das hängt von der jeweiligen Situation ab. MS SQL Indizierte Ansichten sind schneller als eine normale Ansicht oder Abfrage, aber indizierte Ansichten können nicht in einer gespiegelten Datenbankumgebung (MS SQL) verwendet werden.

Eine Ansicht in einer beliebigen Schleife führt zu einer erheblichen Verlangsamung, da die Ansicht bei jedem Aufruf in der Schleife neu aufgebaut wird. Dasselbe gilt für eine Abfrage. In dieser Situation ist eine temporäre Tabelle, die # oder @ verwendet, um Ihre Daten für die Schleife zu speichern, schneller als ein View oder eine Abfrage.

Es kommt also auf die jeweilige Situation an.

1voto

JosephStyons Punkte 55410

Die Speicherung des Ausführungsplans sollte einen gewissen trivialen Vorteil bieten, der jedoch vernachlässigbar ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X