我有一张桌子,Foo。我在 Foo 上运行查询以从 Foo 的子集中获取 id。然后我想运行一组更复杂的查询,但仅限于那些 ID。有没有一种有效的方法来做到这一点?我能想到的最好的方法是创建一个查询,例如:
SELECT ... --complicated stuff
WHERE ... --more stuff
AND id IN (1, 2, 3, 9, 413, 4324, ..., 939393)
也就是说,我构造了一个巨大的“IN”子句。这有效率吗?是否有更有效的方法来执行此操作,或者是与获取 ID 的初始查询一起加入的唯一方法?如果有帮助,我将使用 SQLObject 连接到 PostgreSQL 数据库,并且我可以访问执行查询以获取所有 ID 的游标。
更新:我应该提到,更复杂的查询要么依赖这些 ID,要么创建更多 ID 以在其他查询中查找。如果我要进行一个大型查询,我最终会同时连接六个表左右,这可能太慢了。