Временный промежуточный стол - PullRequest
3 голосов
/ 24 марта 2010

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

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

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

Буду признателен за любые мысли о том, что можно сделать.

Ответы [ 2 ]

4 голосов
/ 24 марта 2010

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

0 голосов
/ 25 марта 2010

Вы также можете посмотреть динамическую выборку (начиная с 9i), см. Следующие ссылки

Ask Tom Magazine Статья

См. Раздел «Планы запросов с временными таблицами»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...