Привет! Вроде помню, что этот вопрос уже где-то поднимался, но не нашел и не помню чем закончилось...
У меня есть селективная процедура, в которой набор данных строится сложным образом. Встала задача оптимизации производительности этой процедуры. Крутил процедуру по всякому, оптимизировал планы и т.п. Получилось так, что наиболее эффективно сложные вьюхи, которые участвуют в запросах процедуры, один раз в начале процедуры залить во временные таблицы 'on commit delete rows' и по ходу процедуры использовать уже не вьюхи, а их данные, материализованные в виде временных таблиц. Я получил таким образом очень хорошее повышение производительности процедуры, но теперь не могу использовать эту чисто селективную по своему прямому назначению процедуру в RO RC транзакции, что не очень хорошо. Нельзя ли разрешить изменения 'on commit delete rows'-таблиц в рамках RO-транзакции? На мой взгляд, это было бы полезно с практической точки зрения использования временных таблиц. Есть ли какие-то препятствия для реализации такой функциональности? Версионность в таких врем. таблицах теряет смысл. Понятно, что данные, находящиеся в 'on commit delete rows'-таблице принципиально не могут быть доступны другим транзакциям - БД после завершения транзакции гарантировано остается в неизменном виде, т.е. read-only фактически не нарушается. Кто что думает по этому поводу? :) (особенно разработчики)

