Я знаком с индексированными представлениями SQL Server (или материализованными представлениями Oracle), мы используем их в наших приложениях OLAP. У них есть действительно классная особенность - возможность узурпировать план выполнения и переназначить его в индексированное представление без необходимости изменения существующего кода.
IE. Допустим, у меня был SPROC, который был действительно дорогим соединением.
ВЫБРАТЬ [НЕКОТОРЫЕ КОЛОННЫ]
ИЗ таблицы 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица 2 [ДЕТАЛИ]
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Table3 [BUNCH MORE JOINS]
...
Если я создал индексированное представление с аналогичным набором результатов, то Query Optimizer, скорее всего, отправит SPROC в мое индексированное представление в отличие от базовых таблиц, и я получу значительное повышение производительности.
Теперь скажите, что я хотел использовать индексированные представления в OLTP!? Я имею в виду, что большинство OLTP (таких как этот сайт) относительно тяжело читаются, если у них дорогие объединения, мы могли бы ускорить их на тонну И потенциально уменьшает конфликт блокировок (http://www.codinghorror.com/blog/archives/001166.html). Еще лучше, если вам не придется изменять какой-либо код, просто создайте индексированное представление.
Но это также означает, что база данных становится больше, поскольку нам нужно хранить копию этих данных в индексированном представлении ...
Кто-нибудь когда-либо использовал индексированные представления для решения проблем конкуренции или скорости в OLTP? Почему я никогда не видел это в использовании?