Индексированное представление и временная таблица для повышения производительности редко выполняемого запроса

У меня медленный запрос, структура которого

select
  fields
from 
  table
join
  manytables
join (select fields from tables) as V1 on V1 on V1.field = ....
join (select fields1 from othertables) as V2
join (select fields2 from moretables) as V3 

Подзапросы select в последних 3 объединениях относительно просты, но объединяются снова, занимают время. Если бы это были физические таблицы, было бы намного лучше.

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

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

Теперь мои сомнения связаны с тем фактом, что индексированные представления в хранилищах данных работают нормально, поскольку они влияют на производительность. Эта база данных является не хранилищем данных, а производственной базой данных приложения, не требующего больших объемов данных.

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

В этом случае нормально использовать индексированные представления? Или я должен отдать предпочтение временному столу?

Также табличная переменная с primary key Ключевое слово является альтернативой.

0 ответов

Другие вопросы по тегам