Индексированное представление и временная таблица для повышения производительности редко выполняемого запроса
У меня медленный запрос, структура которого
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
Ключевое слово является альтернативой.