Как сформулировать представленное представление SQL Server, что агрегаты отчетливых значений?
-
02-10-2019 - |
Вопрос
У меня есть схема, которая включает в себя таблицы, такие как следующее (псевдо схема):
TABLE ItemCollection {
ItemCollectionId
...etc...
}
TABLE Item {
ItemId,
ItemCollectionId,
ContributorId
}
Мне нужно объединить количество различных участников на itemCollectionId. Это возможно с запросом, как:
SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
GROUP BY ItemCollectionId
Я также хочу предварительно рассчитать эту агрегацию, используя индексированный (материализованный) вид. Отличный предотвращает размещение индекса на этот вид. Есть ли способ переформулировать это, что не будет нарушать индексированные проиндексированные ограничения SQL Server?
Решение
Не возможно, видимо.
Другие советы
SELECT
ItemCollectionId,
COUNT(DISTINCT ContributorId),
COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId
Совокупность потребует COUNT_BIG (*) Как упоминалось в MSDN.
Это также говорит «нет отчетливых», и я не уверен (никогда не пробовал, извините), если это относится к этому в агрегате (как у вас есть), или SELECT DISTINCT...