2010-03-24 2 views
3

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

  1. Эти промежуточные таблицы являются транзакционными и не имеют статистических данных. Это хорошая идея присоединиться к ним с таблицами приложений, которые разделены и имеют актуальную статистику.

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

Любые мысли о том, что можно было бы сделать, будут оценены.

ответ

4

Если промежуточные таблицы достигают некоторого относительно последовательного количества строк, вы можете вычислить статистику по ним после завершения процесса популяции (один раз), а затем использовать DBMS_STATS.LOCK_TABLE_STATS для блокировки этих значений на месте. Завышение строк и т. Д. Не имеет значения после того, как таблицы будут усечены, а следующая перезагрузка начнется, но будет на месте, когда процесс начнет запрашивать таблицы для следующего цикла.

Смежные вопросы