hibernate分页方法query.setFirstResult();setMaxResults();
用上面两个方法进行查询如:query.setFirstResult(1500);query.setMaxResults(15);List<T>findTs=query.l...
用上面两个方法进行查询如:
query.setFirstResult(1500);query.setMaxResults(15);
List<T> findTs = query.list();
发现打印出来的sql语句是“select top 1515 order0_.OrderID as OrderID42...”
是把前1515条全部查出来再截取最后的15条返回吗?那这样一样效率很低啊,和前台分页也没什么差别,这是怎样一种机制,有没有什么高效率的分页查询方法? 展开
query.setFirstResult(1500);query.setMaxResults(15);
List<T> findTs = query.list();
发现打印出来的sql语句是“select top 1515 order0_.OrderID as OrderID42...”
是把前1515条全部查出来再截取最后的15条返回吗?那这样一样效率很低啊,和前台分页也没什么差别,这是怎样一种机制,有没有什么高效率的分页查询方法? 展开
展开全部
query.setFirstResult(1500);query.setMaxResults(15); 是基于数据库sql语句的分页方式,对于hibernate分页我只用过两种
1.query.setFirstResult();query.setMaxResults(); 基于数据库sql
2.query.scroll(); 基于内存分页
第一种方式,hibernate会根据不同数据库方言 翻译成对于的分页语句,执行效率比较高
第二种是 现将所需要分页数据的最大值 取到内存中,这样好处是 选择其他分页数据非常快,当软确定就是 会out of memory
你参考一下吧 我的不一定正确
1.query.setFirstResult();query.setMaxResults(); 基于数据库sql
2.query.scroll(); 基于内存分页
第一种方式,hibernate会根据不同数据库方言 翻译成对于的分页语句,执行效率比较高
第二种是 现将所需要分页数据的最大值 取到内存中,这样好处是 选择其他分页数据非常快,当软确定就是 会out of memory
你参考一下吧 我的不一定正确
追问
我以前也觉得第一种效率较高,像上面说的:
query.setFirstResult(1500);query.setMaxResults(15);
但发现翻译的sql语句是“select top 1515 order0_.OrderID as OrderID...”
是查询前1515条,而我只是想要1500-1515之间的这15条,觉得这样没有起到数据库分页提高效率的作用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询