
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.02.2017, 09:13
|
|||
|---|---|---|---|
|
|||
Подскажите с алгоритмом |
|||
|
#18+
- Есть некий запрос, который возвращает данные из БД по заданным параметрам, например по дате "с" и "по". - Возвращаемые этим запросом столбцы являются аргументами для функции данные в этих столбцах не просто поля в базе, а результат какого то вычисления запроса. - Функция рассчитывает данные внутри и возвращает строку с результатом для каждой строки главного запроса. - Проблема в том, что функция тоже обращается к базе на каждую строку главного запроса и получается так, что чем больше строк вернет главный запрос, тем дольше он будет выполняться. - Как можно реализовать функцию, чтобы она читала данные из базы для расчета данных главного запроса, не для каждой строки, а например один раз читала данные из базы сохраняла бы куда то, а после проводились бы вычисления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.02.2017, 09:18
|
|||
|---|---|---|---|
Подскажите с алгоритмом |
|||
|
#18+
global temporary table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.02.2017, 15:01
|
|||
|---|---|---|---|
|
|||
Подскажите с алгоритмом |
|||
|
#18+
Большое спасибо, запрос стал отрабатывать в разы быстрее. Реализовал следующим образом: - Создал две global temporary tables on commit preserve rows - Процедуру, которая заполняет эти временные таблицы, данными из старой функции - Переделал старую функцию, теперь она выбирает данные из временных таблиц - Функцию pipelined (после begin выполняется процедура по наполнению временных таблиц), которая реализует главный запрос и в ней же подставляется функция с выборкой из временных таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1886465]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 451ms |

| 0 / 0 |
