Слабая поддержка альтернативы индексированию представления, которое не может быть проиндексировано в SQL-сервере?
Я пытаюсь проиндексировать свои представления, поскольку данные относительно статичны, и это может повысить производительность.
Я не могу индексировать представление, потому что оно содержит "ранжирование или агрегатную оконную функцию". Есть ли обходной путь для этого?
SELECT r.Id, r.Value, r.TestSessionId, t.Type AS TestType, r.StudentId, ROW_NUMBER() OVER (partition BY r.StudentId, r.TestSessionId ORDER BY r.Id) AS AttemptNumber
FROM dbo.Responses r
INNER JOIN dbo.TestSessions ts ON r.TestSessionId = ts.Id
INNER JOIN dbo.Tests t ON ts.TestId = t.Id
Это представление просто добавляет число попыток к ответам учащихся на вопросы, и я подумал, что это будет идеальный сценарий для индексированного представления, но SQL Server не поддерживает индексы для представлений с оконными функциями.
Я мог бы сгенерировать таблицу кеша вручную, но я хочу, чтобы это было минимальным обслуживанием, поэтому я не должен забывать делать что-то подобное:
Например, возможно, я мог бы создать какой-то триггер (я не знаком с триггерами), который вставляет представление в таблицу кеша при изменении базовой таблицы... что в основном и должно делать индекс в представлении под капотом (хотя и более эффективный, потому что он может обновлять индекс, а не полностью заменять его при изменении данных базовой таблицы).