35万条记录 hibernate 查询 需两秒钟,是否达到了hibernate 的极限
发布网友
发布时间:2022-05-07 04:47
我来回答
共4个回答
热心网友
时间:2022-05-07 06:16
楼主,35w条hibernate怎么可能只要2秒,用数据库你都不止,
除非你是延迟加载,只取主键加载,就是取出只有主键的空对象
__________________________________________________
还以为你35w条都查出来,sorry看错了,如果都查出来秒数量级就做不到了,
确实20条2秒很有优化的空间
热心网友
时间:2022-05-07 07:34
最近写了一个Hibernate分页,之前用游标来实现得到count 总行数..用HQL语句查询!可是现在问题出现了,但数据达到海量的时候,出现比较慢,现在要进行优化:
1.不能使用游标得到count总行数!
ScrollableResults rs = query.scroll(ScrollMode.SCROLL_INSENSITIVE);
rs.last();
return (rs.getRowNumber() + 1);
2.不能使用select count(*) from .....这样要得到count 和list 分布操作很麻烦!查询和count 都要同步!不想两次操作...
假如更改字段都要更改...不想这么做!要公用....
3.不能使用query.list().size()
int count=query.list().size();
这个问题在javaeye上看过,你可以去看下。好像经过讨论,第2种是最可行的。
而且说不用一次取出记录总数.
热心网友
时间:2022-05-07 09:09
35w条数据确实不能算是海量,2s的时间也不是很久
是否需要进行优化是个问题.其次你并不知道影响系统性能的瓶颈是程序,是数据库,还是持久层.作为程序设计人员,如果真的需要优化,我想最简单也最有把握的优化选择是优化自己的程序(通常情况下的瓶颈),相比数据库和持久层,你最了解它.现代数据库在查询方面都有自己的内部优化机制,优化数据库需要专业的dba,这个成本是不言而喻的.如果真的因为使用持久层而成为系统的瓶颈,那你可以考虑放弃hibernate了,简单封装后直接使用jdbc,需要高并发大数据量的网站有不少是这样做的
热心网友
时间:2022-05-07 11:00
每页显示20条,先查20条,翻页继续下面的20条。