Question

J'ai un schéma qui comprend des tables comme les suivantes (schéma pseudo):

TABLE ItemCollection {
   ItemCollectionId
   ...etc...
}

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

Je dois agréger le nombre de cotisants distincts par ItemCollectionId. Ceci est possible avec une requête comme:

SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
 GROUP BY ItemCollectionId

Je veux plus d'effectuer une pré-calculer cette agrégation en utilisant une vue indexée (matérialisée). Les DISTINCTS un empêche d'index étant placé sur ce point de vue. Est-il possible de reformuler ce qui ne viole pas les contraintes de vue indexée de SQL Server?

Était-ce utile?

La solution

Pas possible, apparemment.

Autres conseils

SELECT
   ItemCollectionId,
   COUNT(DISTINCT ContributorId),
   COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId

Un agrégat nécessitera COUNT_BIG (*) comme mentionné dans MSDN.

dit aussi « non DISTINCT » et je ne suis pas sûr (jamais essayé, désolé) si cela vaut pour l'utilisation de dans un agrégat (comme vous avez), ou SELECT DISTINCT...

scroll top