J'ai cherché à utiliser les vues indexées pour augmenter les performances de certaines de nos vues les plus couramment utilisées.
Cependant, les vues indexées ne prennent pas en charge les index cluster non uniques, ce qui va un peu à l'encontre de la priorité définie par le reste de la structure de la base de données.
Par exemple, voici une version simplifiée de quelques-uns de nos tableaux.
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
Les index se trouvent sur Groups.GroupID (non cluster) et Users.GroupID (cluster). La clé en cluster se trouvant sur GroupID dans la table Users, car le plus souvent une plage d'utilisateurs d'un groupe spécifique serait récupérée. De toute évidence, vous auriez plusieurs utilisateurs par groupe, donc cet index cluster n'est pas unique.
Cela me laisse un peu incertain sur la façon de suivre cette priorité lors de l'indexation de mes vues telles que cet exemple, car je ne peux pas avoir un index cluster non unique.
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
En réalité, la seule valeur de cette vue qui serait toujours unique est la colonne ConsumableID, donc je n'ai que peu de choix quant à l'endroit où placer mon index.
Pourquoi les vues n'autorisent-elles pas les index cluster non uniques lorsque les tables normales le font?
(GroupID, UserID)
. Ne vous limitez pas à une seule colonne pour la clé. 2 - J'imagine que la limitation d'une vue est due au fait qu'il s'agit d'un objet de données supplémentaire qui doit avoir des lignes facilement liées aux index NC. Pour une table, la clé CI non unique est accompagnée d'un int, mais je pense que ce serait plus difficile avec une vue indexée car ce n'est pas une table réelle mais doit REFLÉTER une table réelle.