如果我打开一个 JDBC 连接(对于 Oracle),并执行多个 select
查询,是否会比调用执行这些查询并在游标中返回结果的过程效率更低?
编辑:示例查询是:
select id, name from animals;
select * from animal_reservoir where animal_id=id;
(实际的第一个查询会非常复杂,并且返回的 id 将在第二个查询中多次用作输入。因此,第一个查询在第二个查询中用作子查询的效率会很低。另外,查询不能合并。)
最佳答案
两个主要区别是
- 更少的往返次数(如果有很多小查询,这一点很重要,否则就没那么多)
- 无需将“中间”结果(仅下一个查询需要,但最终不需要)发送回客户端
这有多大影响完全取决于应用程序。
通常,可能还有其他替代方案(例如首先发出不同类型的查询;有人在评论中提到 JOIN - 或缓存 - 或索引 - 或数据非规范化 - 或...... )也要考虑。
像往常一样,先做感觉最自然的事情,然后在发现问题时进行优化。
关于java - 通过单个连接进行 JDBC 选择查询的效率是否低于包含这些查询的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53313020/