首页 > 解决方案 > JDBC 查询运行很慢

问题描述

我有一个非常简单的查询,使用直接 JDBC 连接通过一个非常简单的基本 Spring Boot 应用程序运行时需要 70 秒,但是当直接在 Oracle SQL Developer 上运行时,只需要 13 秒。如果有区别的话,表中有 7000 条记录。

我从 SQL Developer 运行的查询非常简单。

select id from task

我在 SQL Developer 中按 Ctrl+End 以获取表中的所有行,返回 7000 条记录。

我较慢的 Java 代码包含一个使用 Spring JDBC 模板的 Dao。

@Autowired
private JdbcTemplate jdbcTemplate;

private static final String GET_ALL_TASKS = "SELECT id FROM task";

public List<Task> getAllTasks() {
   RowMapper<Task> rm = new TaskRowMapper();
   return this.jdbcTemplate.query(GET_ALL_TASKS, rm);
}

我有这个 POJO。

@Data
@AllArgsConstructor
public class Task {
  private Bigdecimal id;
}

我有一个只调用道的控制器。

@RestController 
public class TestController {

@Autowired 
private TaskDao taskDao;

@RequestMapping("/") 
public void test() { 
    taskDao.getAllTasks(); 
}

我的 TaskRowMapper 类是空的并且没有做任何事情,因为我担心这可能是性能缓慢的原因。

由于 Java 端几乎没有任何处理,我对 Java 如何以慢 5 倍的速度运行查询感到非常困惑。

有没有人有任何建议,或者我有一个不合理的期望,希望我的基本 Java 应用程序应该能够在比直接在 Oracle 上运行多一两秒的时间内运行 Oracle 查询?

标签: javaoraclejdbc

解决方案


推荐阅读