Сначала небольшой контекст:
Я бы сказал, что у меня хороший опыт работы с SQL-сервером, но я разработчик, а не DBA. Моя текущая задача - улучшить производительность базы данных, которая была построена с очень сильной зависимостью от представлений. Приложение приправлено встроенным sql, и использование Tuning Advisor предлагает только пару недостающих индексов, что выглядит разумным.
Я считаю, что переработка структуры базы данных таким образом, чтобы данные, созданные с помощью этих конкретных представлений (много CASE WHENS), сохранялись, поскольку над твердыми данными требуется слишком много работы с учетом бюджета и временных масштабов. Полное переписывание этих огромных представлений и всего кода, который на них полагается, также не может быть и речи.
Мое предложенное решение:
Тестирование показало, что если я сделаю SELECT INTO с данными представления, сохранить его в постоянной таблице, а затем заменить ссылки на представление этой таблицей, время запроса снизится до 44% от того, что было при использовании представления.
Поскольку данные обновляются процессом-пауком в одночасье, я думаю, что я может просто отбрасывать и воссоздавать эту таблицу на ежедневной основе, а затем вносить незначительные изменения в запросы, чтобы использовать это представление.
Может ли кто-нибудь с хорошим опытом администратора баз данных высказать мне свое мнение о том, является ли это хорошим / * &? !! ужасная идея. Если последнее, есть ли лучший способ подойти к этому?
Спасибо.