У меня есть стол, Фу. Я запускаю запрос на Foo, чтобы получить идентификаторы из подмножества Foo. Затем я хочу выполнить более сложный набор запросов, но только по этим идентификаторам. Есть ли эффективный способ сделать это? Лучшее, что я могу придумать, - это создать запрос, такой как:
SELECT ... --complicated stuff
WHERE ... --more stuff
AND id IN (1, 2, 3, 9, 413, 4324, ..., 939393)
То есть я строю огромное предложение "IN". Это эффективно? Есть ли более эффективный способ сделать это, или это единственный способ присоединиться к исходному запросу, который получает идентификаторы? Если это помогает, я использую SQLObject для подключения к базе данных PostgreSQL, и у меня есть доступ к курсору, который выполнил запрос, чтобы получить все идентификаторы.
ОБНОВЛЕНИЕ: Я должен отметить, что все более сложные запросы либо основаны на этих идентификаторах, либо создают дополнительные идентификаторы для поиска в других запросах. Если бы мне пришлось сделать один большой запрос, я бы в итоге соединил шесть таблиц одновременно, что может быть слишком медленным.