java - 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 查询?
解决方案
推荐阅读
- python - 协程如何控制它的屈服点?
- android - 我们如何更改 Android 模拟器的构建属性?
- ios - 尝试显示谷歌广告时,Tableviewcell 不显示任何内容
- mongodb - 从 mongodb 中的另一个集合中选择数据后插入集合
- php - 如何添加用户可以决定他想要多少个密码的功能?
- google-kubernetes-engine - 对 Google Cloud 上 kubernetes 的蛇形制作中的“--default-remote-prefix”标志感到困惑
- java - 制作静态数据源
- c - 与 C 中命令行参数的动态内存分配混淆
- wpf - 如何在 WPF 工具栏中更改 ToolBarOverflowPanel 的 WrapWidth 值
- selenium - 调用类导致的空异常