Bien qu'une vue ne soit pas un objet réel, l'index cluster est.
Et les lignes retournées par la vue peuvent être triées et stockées. Toutefois, pour être indexable, la vue doit satisfaire à un certain nombre de conditions. Généralement, ils s'assurent que les résultats sont conservés et que les mises à jour de la table sous-jacente peuvent être facilement suivies dans une vue (de sorte que l'index n'aura pas à être reconstruit chaque fois que la table sous-jacente est mise à jour).
Par exemple, SUM(*)
et COUNT_BIG(*)
sont des fonctions distributives:
SUM(set1) + SUM(set2) = SUM(set1 + set2)
COUNT_BIG(set1) + COUNT_BIG(set2) = COUNT_BIG(set1 + set2)
, il est donc facile de recalculer les valeurs de SUM
et COUNT_BIG
lorsque la table est modifiée, en utilisant uniquement les lignes de vue et les valeurs des colonnes affectées .
Cependant, ce n'est pas le cas avec d'autres agrégats, ils ne sont donc pas autorisés dans une vue indexée.
On dit que la vue indexée "matérialise" les données de vue - en ajoutant un index en cluster dans lequel le niveau de feuille sont les pages de données réelles, c'est exactement ce qui se passe. Et c'est exactement la raison pour laquelle une vue indexée est généralement beaucoup plus rapide qu'une vue "normale" –