Frage

OK, ich bin über SQL Server indiziert Ansichten verwirrt (mit 2008)

Ich habe eine indizierte Sicht bekam genannt

AssignmentDetail

, wenn ich bei dem Ausführungsplan suche

select * from AssignmentDetail

es zeigt den Ausführungsplan aller zugrunde liegenden Indizes aller anderen Tabellen, dass die indizierte Sicht zu abstrahieren soll.

Ich würde denken, dass der Ausführungsplan woul einfach einen Clustered-Index Scan von PK_AssignmentDetail sein (der Name des Clustered-Index für meine Sicht), aber es funktioniert nicht.

Es scheint mit dieser indizierten Sicht kein Performance-Gewinn zu sein, was sollte ich tun? Soll ich auch einen nicht gruppierten Index mit allen Spalten erstellen, so dass sie nicht alle die anderen Indizes getroffen haben?

Jeder Einblick wäre sehr dankbar

War es hilfreich?

Lösung

Die Enterprise Edition von SQL Server ist intelligent genug, um zu suchen und nutzen indizierte Sichten, wenn sie existieren. Wenn Sie jedoch nicht Enterprise Edition ausgeführt wird, müssen Sie es explizit sagen, die indizierte Sicht zu verwenden, wie folgt aus:

select * 
from AssignmentDetail WITH (NOEXPAND)

Andere Tipps

Der Punkt einer indizierten Sicht ist nicht zu beschleunigen

SELECT * FROM MyView

Das, was es Ihnen die Leistung erhöhen wird dazu beitragen, ein Index für eine Spalte der Ansicht selbst, wie.

SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'

Sie können also einen Index für ViewColumnA und ViewColumnB haben, die auf verschiedenen Tabellen tatsächlich existieren könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top