Индекс выполняет всю работу?
Вы можете узнать, как выполняется запрос, просмотрев план выполнения.
Например, попробуйте это:
explain plan for select distinct field from table;
select * from table(dbms_xplan.display);
Я заметил, что вы не включили ORDER BY. Если вы не включите ORDER BY, то порядок набора результатов может быть случайным, особенно если оракул использует алгоритм HASH для составления отдельного списка. Вы должны это проверить.
Итак, я бы посмотрел на планы выполнения для исходного запроса, который, по вашему мнению, использует индекс, и на тот, который основан на таблице кеша. Возможно, опубликуйте их, и мы сможем прокомментировать, что на самом деле происходит.
Кстати, таблица кеша обычно реализуется как материализованное представление, особенно если основная таблица обычно довольно статична.