【发布时间】:2014-08-19 09:11:22
【问题描述】:
例如,我想从包含大约 18K 行的citizen 表中检索所有数据。
String sqlResult = "SELECT * FROM CITIZEN";
Query query = getEntityManager().createNativeQuery(sqlResult);
query.setFirstResult(searchFrom);
query.setMaxResults(searchCount); // searchCount is 20
List<Object[]> listStayCit = query.getResultList();
一切都很好,直到“searchFrom”偏移量很大(17K 或其他东西)。例如,获得 20 行( 17,000 到 17,020 )需要 3-4 分钟。那么有没有更好的方法来获得它更快,但不是通过调整数据库?
P/s:对不起我的英语不好
【问题讨论】:
-
你使用哪个数据库?
-
可以添加生成的SQL语句吗?
-
可能生成的查询会引起一些关于 ROWID 使用的皱眉。事实是,所使用的查询以分页方式进行是非常糟糕的。它甚至没有按可预测的顺序获取结果。
标签: jpa spring-data