Привет!

Вроде помню, что этот вопрос уже где-то поднимался, но не нашел и не помню чем 
закончилось...

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

Крутил процедуру по всякому, оптимизировал планы и т.п.
Получилось так, что наиболее эффективно сложные вьюхи, которые участвуют в 
запросах процедуры, один раз в начале процедуры залить во временные таблицы 'on 
commit delete rows' и по ходу процедуры использовать уже не вьюхи, а их данные, 
материализованные в виде временных таблиц.

Я получил таким образом очень хорошее повышение производительности процедуры, 
но теперь не могу использовать эту чисто селективную по своему прямому 
назначению процедуру в RO RC транзакции, что не очень хорошо.

Нельзя ли разрешить изменения 'on commit delete rows'-таблиц в рамках 
RO-транзакции? На мой взгляд, это было бы полезно с практической точки зрения 
использования временных таблиц.

Есть ли какие-то препятствия для реализации такой функциональности? 
Версионность в таких врем. таблицах теряет смысл. Понятно, что данные, 
находящиеся в 'on commit delete rows'-таблице принципиально не могут быть 
доступны другим транзакциям - БД после завершения транзакции гарантировано 
остается в неизменном виде, т.е. read-only фактически не нарушается.

Кто что думает по этому поводу? :) (особенно разработчики)

Ответить