如果我打开一个JDBC连接(对于Oracle),并执行多个select
查询,它会比调用执行那些查询并在游标中返回结果的过程效率低吗?
编辑:示例查询为:
select id, name from animals;
select * from animal_reservoir where animal_id=id;
(实际的第一个查询会非常复杂,返回的id将在第二个查询中多次用作输入。因此,第一个查询在第二个查询中不能用作子查询。而且,查询无法合并。)
答案 0 :(得分:1)
您尚未提供必须使用过程的SQL查询
您可以使用with
子句对多个“内部SQL”执行1个SQL查询:
with animals as (
select id, name from animals
)
select * from animal_reservoir,animals where animal_id=animals.id;
答案 1 :(得分:1)
两个主要区别是
影响到底有多大取决于应用程序。
通常,可能还有其他选择(例如首先发出不同类型的查询;有人在注释中提到了JOIN或缓存-或建立索引-或数据非规范化-或... )也要考虑。
像往常一样,先做最自然的事情,并在发现问题时进行优化。