Cómo formular una vista indizada de SQL Server que agrega valores distintos?
-
02-10-2019 - |
Pregunta
Tengo un esquema que incluye tablas como la siguiente (pseudo esquema):
TABLE ItemCollection {
ItemCollectionId
...etc...
}
TABLE Item {
ItemId,
ItemCollectionId,
ContributorId
}
Me necesidad de agregar el número de contribuyentes distintos por ItemCollectionId. Esto es posible con una consulta como:
SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
GROUP BY ItemCollectionId
Quiero más para pre-calcular esta agregación usando un (materializado) vista indizada. Los evita DISTINCT un índice que se colocan en este punto de vista. ¿Hay alguna manera de reformular esto lo que no violará indexados limitaciones vista de SQL Server?
Solución
No es posible, por lo visto.
Otros consejos
SELECT
ItemCollectionId,
COUNT(DISTINCT ContributorId),
COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId
Un agregado requerirá COUNT_BIG (*) como se ha mencionado en MSDN .
Esto también dice "no diferenciados" y no estoy seguro (nunca había probado, lo siento) si esto se aplica a su uso en un agregado (como que tiene), o SELECT DISTINCT...