2010-05-12 5 views
2

Я знаю, что Oracle предлагает несколько опций обновления для своих материализованных представлений (по запросу, при фиксации, периодически). Поддерживает ли Microsoft SQLServer одинаковые функции для своих индексированных представлений?Режим обновления по требованию для индексированного представления (= материализованные представления) на SQL Server?

Если нет, то как я могу использовать индексированные представления на SQLServer, если моя цель - экспортировать данные по ежедневной + по запросу и хотите избежать проблем с производительностью? Существует ли обходное решение?

ответ

2

Материализованный вид в SQL Server всегда обновляется с накладными расходами на INSERT/UPDATE/DELETE, которые влияют на представление.

Я не совсем уверен в ваших требованиях, вы не совсем поняли мне вопрос. Однако, если вы хотите только накладные расходы один раз, on a daily+ on-demand basis, я предлагаю вам отказаться от индекса, когда он вам не нужен, и воссоздать его, когда вы это сделаете. Индекс будет создан при его создании, и он будет обновлен. Когда индекс отбрасывается, на ваших командах INSERT/UPDATE/DELETE не будет никаких накладных расходов.

+0

Спасибо за ответ. То, что я действительно хочу, - та же самая особенность в SQL Server, что и у Oracle. Это опция обновления только по требованию, чтобы избежать накладных расходов. Но, насколько я понял, SQL Server не может этого поддержать. Ваше предложение кажется выполнимым. Большой вопрос - это, конечно, время построения нового индексированного представления каждый раз, когда я его создаю. Знаете ли вы, имеет ли SQL Server разные методы сборки на выбор? (Я знаю, что Oracle имеет 1) заполняется при создании или 2) , заполненном следующей операцией обновления) Я полагаю, что оператор DROP довольно быстро запускается? – MOLAP