java - 通过单个连接进行 JDBC 选择查询的效率是否低于包含这些查询的过程?

标签 java oracle jdbc

如果我打开一个 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/

相关文章:

sql - 我如何在 where 子句中使用 If Else

sql - 如何基于Oracle中的Case语句使用Group By?

Java - 使用 JDBC 连接到在线 MySQL 数据库时遇到问题

java - JDBC Insert with Prepared Statement 说我有 SQL 语法错误

java - 将 MBean 从 JBoss 4.x 移植到 JBoss 7

java - 有没有更好的方法来添加大量带有附加到数组的独特图像的 JPanel?

java - Kie-Execution Server 的源代码

java - 选择了哪个 JRadioButton

oracle - 数据库驱动错误: error possibly near <*> indicator at char 15 in 'TRUNCATE TABLE <*>MONTHLY_DATA' )

java - 如何为此 JDBC :ODBC connection string that is trying to connect to an MS Access database 添加密码