Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/cplusplus11/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 使用高偏移量时性能较慢_Jpa_Spring Data - Fatal编程技术网

Jpa 使用高偏移量时性能较慢

Jpa 使用高偏移量时性能较慢,jpa,spring-data,Jpa,Spring Data,例如,我想从包含约18K行的citizen表中检索所有数据 String sqlResult = "SELECT * FROM CITIZEN"; Query query = getEntityManager().createNativeQuery(sqlResult); query.setFirstResult(searchFrom); query.setMaxResults(searchCount); // searchCount is 20 List<Object[]> l

例如,我想从包含约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();
String sqlResult=“选择*来自公民”;
Query Query=getEntityManager().createNativeQuery(sqlResult);
query.setFirstResult(searchFrom);
query.setMaxResults(searchCount);//搜索计数是20
List listStayCit=query.getResultList();
在“searchFrom”偏移量很大(17K或其他)之前,一切都很好。例如,需要3-4分钟才能得到20行(17000到17020)。那么,有没有更好的方法让它更快,但不是通过调谐数据库


p/s:很抱歉我的英语不好

您可以使用批处理查询。 这里有一篇很好的文章解释您的问题的解决方案:

您使用哪一个数据库?您可以添加生成的SQL语句吗?生成的查询可能会对ROWID的使用引起一些皱眉。事实上,所使用的查询以分页方式进行是非常糟糕的;它甚至不能按可预测的顺序获取结果。当您已经在使用
setFirstResult()
setMaxResults()
时,使用批处理查询如何解决此问题?