仅从 jdbcTemplate 查询中获取一行以进行性能优化

问题描述

jdbcTemplate.query(getQuery(id),rs -> {
            if(rs.next()) {
                mainDTO.setSim(rs.getString("sim"));
                mainDTO.setImei(rs.getString("imei"));
            }
        });

我使用上面的代码片段从数据库中检索数据并获得了 100 多条记录。但是对于所有记录,sim 和 imei 编号是相同的。其他领域不同。执行上述代码时,我可以从第一条记录本身获取 sim 和 imei 编号。但是查询在所有记录上运行,因此需要 3 秒以上才能完成。这是问题所在。

enter image description here

从第一条记录中获取 sim 和 imei 的值后,如何停止检索其他记录。我无法将SQL查询更改为文档,需要在java代码本身中进行优化。

我如何优化它以在 100 台以下的工厂内执行。

解决方法

您有两种选择,要么使用 SQL 查询进行限制,要么使用 JdbcTemplate#setMaxRows

SQL

您需要编辑查询,包括将要选择的列和表名:

SELECT * FROM table LIMIT 1

JDBC

使用 JdbcTemplate#setMaxRowsJdbcTemplate 配置为最多返回一行:

jdbcTemplate.setMaxRows(1);

我猜它模仿了 Statement#setMaxRows