hibernate 查询,分页的时候,只需十条记录,但是需要总记录的数量,这个总记录数量是使用Query.list.size,还是单独去数据库再查一遍(如count(*) from ...)。有人说用Query.list.size会取出所有的记录 放进 list,再统计数量,而用count(*)则会在数据库里边就统计好了。
请问哪种方式好? 

解决方案 »

  1.   

    Query.list.size,这个好,因为和数据库频繁交互,会导致效率较低!
      

  2.   

    我也觉得Query.list.size这种方法好。
      

  3.   

    Query.list.size 一样也要从数据库啊查吧
    反正我是 用的count  select count 应该不会影响太大的
      

  4.   

    楼上几位兄弟说Query.list.size好,你不就一个统计吗?用count不知道提高多少倍的性能,你只要十条记录,又不是所有记录,如果你有1亿一条记录,那你也把所有记录查出来,然后从数据库传输到客户端啊!很占带宽的,而且查询数据库很耗时间,count的速度非常快,为何不用
      

  5.   

    这么说来,count 应该比较好
      

  6.   

    比如 query.setFirstResult(start);query.setMaxResults(limit) 会访问所有的记录吗,还是只访问 Start至start+limit 条记录?
      

  7.   

    其实,在hibernate.cfg.xml配置的session-factory中,设置一个show_sql的属性为true:
    <property name="show_sql">true</property>
    这样就可以在后台看见hibernate执行的sql语句,就可以明白hibernate是怎样工作的了,自己去找一下答案吧。