从 jdbcTemplate 查询中只获取一行以进行性能优化
Posted
技术标签:
【中文标题】从 jdbcTemplate 查询中只获取一行以进行性能优化【英文标题】:Get only one row from jdbcTemplate query for performance optimization 【发布时间】:2021-01-24 20:02:29 【问题描述】: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 台以下的工厂内执行。
【问题讨论】:
【参考方案1】:您有两个选择,要么限制使用 SQL 查询,要么使用 JdbcTemplate#setMaxRows
:
SQL
您需要编辑查询,包括将要选择的列和表名:
SELECT * FROM table LIMIT 1
JDBC
使用JdbcTemplate#setMaxRows
配置JdbcTemplate
最多返回一行:
jdbcTemplate.setMaxRows(1);
我猜它模仿Statement#setMaxRows
。
【讨论】:
以上是关于从 jdbcTemplate 查询中只获取一行以进行性能优化的主要内容,如果未能解决你的问题,请参考以下文章