Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите с алгоритмом / 3 сообщений из 3, страница 1 из 1
10.02.2017, 09:13
    #39402013
rekrabbe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с алгоритмом
- Есть некий запрос, который возвращает данные из БД по заданным параметрам, например по дате "с" и "по".

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

- Функция рассчитывает данные внутри и возвращает строку с результатом для каждой строки главного запроса.

- Проблема в том, что функция тоже обращается к базе на каждую строку главного запроса и получается так, что чем больше строк вернет главный запрос, тем дольше он будет выполняться.

- Как можно реализовать функцию, чтобы она читала данные из базы для расчета данных главного запроса, не для каждой строки, а например один раз читала данные из базы сохраняла бы куда то, а после проводились бы вычисления?
...
Рейтинг: 0 / 0
10.02.2017, 09:18
    #39402015
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с алгоритмом
global temporary table
...
Рейтинг: 0 / 0
10.02.2017, 15:01
    #39402329
rekrabbe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с алгоритмом
Большое спасибо, запрос стал отрабатывать в разы быстрее.
Реализовал следующим образом:
- Создал две global temporary tables on commit preserve rows
- Процедуру, которая заполняет эти временные таблицы, данными из старой функции
- Переделал старую функцию, теперь она выбирает данные из временных таблиц
- Функцию pipelined (после begin выполняется процедура по наполнению временных таблиц), которая реализует главный запрос и в ней же подставляется функция с выборкой из временных таблиц
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите с алгоритмом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]