Oracle поддерживает концепцию под названием Query Rewrite.Идея такова:
Когда вы хотите, чтобы поиск (WHERE ID = val) шел быстрее, вы добавляете индекс.Вам не нужно указывать оптимизатору использовать индекс - он просто делает.Вам не нужно изменять запрос для чтения из индекса ... вы попадаете в ту же таблицу, что и всегда, но теперь вместо чтения каждого блока в таблице он читает несколько блоков индекса и знает, куда идти вТаблица.
Представьте себе, если бы вы могли добавить что-то подобное для агрегации.Что-то, что оптимизатор просто «использовал бы» без подсказки изменить.Допустим, у вас есть таблица DAILY_SALES за последние десять лет.Некоторые менеджеры по продажам хотят ежемесячные продажи, некоторые - ежеквартально, некоторые - ежегодно.
Вы можете сохранить кучу дополнительных таблиц, содержащих эти агрегации, а затем попросить пользователей изменить свой запрос на использование другой таблицы.,В Oracle вы бы построили их как материализованные представления.Вы не работаете, кроме определения MV и MV Log в исходной таблице.Затем, если пользователь запрашивает у DAILY_SALES сумму за месяц, ORACLE изменит ваш запрос на использование соответствующего уровня агрегации.Ключ БЕЗ изменения запроса вообще.
Может быть, поддержка других БД, что ... но это, безусловно, то, что вы ищете.