Question

OK, je suis confus au sujet des vues indexées serveur sql (avec 2008)

J'ai une vue indexée appelé

AssignmentDetail

quand je regarde le plan d'exécution pour

select * from AssignmentDetail

il montre le plan d'exécution de tous les indices sous-jacents de toutes les autres tables que la vue indexée est censé loin abstrait.

Je pense que le plan d'exécution woul être simplement une analyse d'index ordonné en clusters de PK_AssignmentDetail (le nom de l'index ordonné en clusters pour moi) mais il ne fonctionne pas.

Il ne semble pas gain de performance avec ce point de vue indexée que dois-je faire? Dois-je créer également un index non ordonnés en clusters avec toutes les colonnes de sorte qu'il n'a pas de frapper tous les autres indices?

Toute idée serait grandement apprécié

Était-ce utile?

La solution

L'édition Enterprise de SQL Server est assez intelligent pour voir et faire usage de vues indexées lorsqu'ils existent. Toutefois, si vous n'êtes pas en cours d'exécution Enterprise Edition, vous devrez indiquer explicitement d'utiliser la vue indexée, comme ceci:

select * 
from AssignmentDetail WITH (NOEXPAND)

Autres conseils

Le point d'une vue indexée est de ne pas accélérer

SELECT * FROM MyView

La chose qu'il vous aidera à augmenter la performance est un index sur une colonne de la vue elle-même, par exemple.

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

Vous pouvez donc avoir un index sur ViewColumnA et ViewColumnB qui pourrait réellement exister sur des tables différentes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top