Berechnet SQL Server Ansichten jedes Mal, wenn jemand die Ansichten abfragt?

7

Ich frage mich, ob SQL Server Ansichten jedes Mal berechnet, wenn jemand die Ansichten abfragt. Das liegt daran, dass es jedes Mal, wenn ich die Ansichten abfrage , so lange dauert .

Und als ich versuchte, die Zeit zu verkürzen, indem ich nur die obersten 10 Zeilen aus der Ansicht auswählte, dauerte es genauso lange. Ich vermute, dass SQL Server die Ansicht für die gesamte Tabelle berechnen muss, auch wenn ich nur ein paar Zeilen aus der Ansicht haben möchte, habe ich Recht?

lamwaiman1988
quelle

Antworten:

6

Ja, eine Ansicht ist nur ein Makro (sofern nicht indiziert). Das Verhalten ist bekannt.

Siehe Tony Rogersons Artikel . Sie können es auch selbst in den Abfrageplänen sehen. Die Ansicht ist im Abfrageplan nicht vorhanden, da sie nicht als Makro vorhanden sein kann

Beachten Sie auch das Phänomen "Predicate Pushing" , wenn Sie Ansichten filtern oder nach oben zeigen

gbn
quelle