从 jdbcTemplate 查询中只获取一行以进行性能优化
Get only one row from jdbcTemplate query for performance optimization
jdbcTemplate.query(getQuery(id),
rs -> {
if(rs.next()) {
mainDTO.setSim(rs.getString("sim"));
mainDTO.setImei(rs.getString("imei"));
}
});
我使用上面的代码片段从数据库中检索数据并获得超过 100 条记录。但对于所有记录,sim 和 imei 号码是相同的。其他领域不同。执行上面的代码时,我可以从第一条记录本身获取 sim 和 imei 号码。但是在所有记录上查询 运行,因此需要超过 3 秒才能完成。这是问题所在。
从第一条记录中获取 sim 和 imei 的值后,如何停止检索其他记录。我无法将 sql 查询更改为文档,需要在 java 代码本身中进行优化。
我如何优化它以在低于 100 个磨坊内执行。
您有两个选择,要么使用 SQL 查询限制,要么使用 JdbcTemplate#setMaxRows
:
SQL
您需要编辑查询,包括要选择的列和 table 名称:
SELECT * FROM table LIMIT 1
JDBC
使用JdbcTemplate#setMaxRows
配置JdbcTemplate
到return最多一行:
jdbcTemplate.setMaxRows(1);
我猜它模仿了 Statement#setMaxRows
。
jdbcTemplate.query(getQuery(id),
rs -> {
if(rs.next()) {
mainDTO.setSim(rs.getString("sim"));
mainDTO.setImei(rs.getString("imei"));
}
});
我使用上面的代码片段从数据库中检索数据并获得超过 100 条记录。但对于所有记录,sim 和 imei 号码是相同的。其他领域不同。执行上面的代码时,我可以从第一条记录本身获取 sim 和 imei 号码。但是在所有记录上查询 运行,因此需要超过 3 秒才能完成。这是问题所在。
我如何优化它以在低于 100 个磨坊内执行。
您有两个选择,要么使用 SQL 查询限制,要么使用 JdbcTemplate#setMaxRows
:
SQL
您需要编辑查询,包括要选择的列和 table 名称:
SELECT * FROM table LIMIT 1
JDBC
使用JdbcTemplate#setMaxRows
配置JdbcTemplate
到return最多一行:
jdbcTemplate.setMaxRows(1);
我猜它模仿了 Statement#setMaxRows
。