Выполнение нескольких запросов в одном вызове БД - SQL - PullRequest
1 голос
/ 23 июня 2011

Я создаю отчеты в формате PDF с данными, полученными из базы данных (Oracle).Для каждого отчета я делаю вызов в БД.Я хочу оптимизировать вызов для нескольких отчетов (может иметь до 500 отчетов).В текущем сценарии я делаю 500 вызовов БД, и это приводит к превышению времени ожидания сервера.
Я ищу решения и ответы.
1 .Могу ли я передать список данных в качестве входных данных для запроса?(Для запроса потребовалось 2 ввода.)
2 .Весь набор данных должен происходить в 1 БД вызовов, а не в 500 отдельных вызовов.
3 .В ответе должен быть накоплен результат 500 входных данных.
Пожалуйста, предложите способы решения или направления для решения проблемы?

Это система на основе Java.Вызов БД из веб-приложения.БД: Oracle.

Спасибо !!

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Если вы хотите получить данные для произвольного числа «отчетов» в одном вызове базы данных, то я бы подумал, что вам нужно вызывать хранимую процедуру, которая возвращает очень большой слепок текста XML или JSON, который вы можете затем проанализируйте и отобразите в вашем приложении. Oracle имеет встроенные функции для создания XML, а JSON довольно легко структурировать самостоятельно (хотя я полагаю, что может быть доступен сторонний пакет PL / SQL JSON).

2 голосов
/ 23 июня 2011

Есть несколько способов объединения результатов из нескольких запросов.

  1. UNION ALL - позволяет буквально объединять результаты между запросом1 UNION ALL запрос2
  2. Сделать 1 более общий запрос.- это лучший ответ, если это возможно.
  3. Присоединяйтесь к подзапросам и распечатывайте данные горизонтально, если вы можете присоединиться к ним.выберите a. , b. из (querya) a join (queryb) b on (id)
  4. Возможно, есть и другие способы.Например, хранимая процедура и т. Д.
...