Как получить дочерние строки в DB2 для определенного подмножества родительских строк?
У меня есть родительская строка и дочерние строки в 7-10 отдельных таблицах, а уникальный ключ связывает строки в дочерних таблицах с родительской строкой. Для функции поиска мне нужно получить родительские и все соответствующие дочерние строки на основе запроса к данным в родительской таблице. Есть до 5000 соответствующих родительских строк. В настоящее время мы повторно запускаем запрос для каждой из дочерних таблиц, например:
select data from child
where key in (select key from parent where search_criteria)
Это выглядит довольно нелегко, особенно когда мы продолжаем добавлять дополнительные дочерние таблицы. Есть ли лучший способ сделать это в DB2?
Некоторые из моих мыслей:
- Будет ли DB2 повторно использовать результаты этого выбора? А как насчет большого количества запросов?
- Я знаю ключи после родительского запроса, так что я мог передать их в SQL, но этот SQL мог бы сойти с ума с 5000 ключами и предположительно превысить лимит SQL.
- Стоит ли хранить ключи как временную таблицу или настройка / разборка будет чрезмерной?
1 ответ
Это звучит как идеальный сценарий использования программы RPG и использования хранимой процедуры, которая вызывает / потребляет ее. Таким образом, вы не совершаете так много поездок в оба конца. Передайте критерии поиска хранимой процедуре, и сохраненный процесс вызовет программу RPG. Пусть RPG объединит в цепочку "файлы", что ускорит ваш запрос.