Решение для повышения производительности базы данных - «Кэширование представления» - это хорошая идея?

Сначала небольшой контекст:

Я бы сказал, что у меня хороший опыт работы с SQL-сервером, но я разработчик, а не DBA. Моя текущая задача - улучшить производительность базы данных, которая была построена с очень сильной зависимостью от представлений. Приложение приправлено встроенным sql, и использование Tuning Advisor предлагает только пару недостающих индексов, что выглядит разумным.

Я считаю, что переработка структуры базы данных таким образом, чтобы данные, созданные с помощью этих конкретных представлений (много CASE WHENS), сохранялись, поскольку над твердыми данными требуется слишком много работы с учетом бюджета и временных масштабов. Полное переписывание этих огромных представлений и всего кода, который на них полагается, также не может быть и речи.

Мое предложенное решение:

Тестирование показало, что если я сделаю SELECT INTO с данными представления, сохранить его в постоянной таблице, а затем заменить ссылки на представление этой таблицей, время запроса снизится до 44% от того, что было при использовании представления.

Поскольку данные обновляются процессом-пауком в одночасье, я думаю, что я может просто отбрасывать и воссоздавать эту таблицу на ежедневной основе, а затем вносить незначительные изменения в запросы, чтобы использовать это представление.

Может ли кто-нибудь с хорошим опытом администратора баз данных высказать мне свое мнение о том, является ли это хорошим / * &? !! ужасная идея. Если последнее, есть ли лучший способ подойти к этому?

Спасибо.

1
задан gb2d 12 October 2010 в 08:49
поделиться