138万条记录的List()与iterate()速度对比

本文介绍使用Hibernate进行数据库分页查询的几种方法,包括使用list()和iterate()的区别,以及如何通过设置firstResult和maxResults参数实现高效的数据分页加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序代码


        Session session=HibernateSessionFactory.getSession();
        List li=null;
        Date d=new Date();
        System.out.print(d.toString());
        li=session.createQuery("from TgovMaterial").list();
        Date d2=new Date();
        System.out.print(d2.toString());



...超出内存...

程序代码 程序代码

        Session session=HibernateSessionFactory.getSession();
        Iterator it=null;
        Date d=new Date();
        System.out.print(d.toString());
        it=session.createQuery("from TgovMaterial").iterate();
        Date d2=new Date();
        System.out.print(d2.toString());



Wed Jun 04 09:31:43 GMT 2008Hibernate: select tgovmateri0_.Id as col_0_0_ from [Material-08].dbo.tGovMaterial tgovmateri0_
Wed Jun 04 09:31:43 GMT 2008
不到一秒钟,所以记录较多时,我们推荐使用iterate()
输 出测试:

程序代码 程序代码

        Session session=HibernateSessionFactory.getSession();
        Iterator it=null;
        Date d=new Date();
        System.out.print(d.toString());
        it=session.createQuery("from TgovMaterial").iterate();
        while(it.hasNext())
        {
            TgovMaterial t=(TgovMaterial)it.next();
            System.out.println(t.getId());
        }

        Date d2=new Date();
        System.out.print(d2.toString());



Wed Jun 04 09:38:17 GMT 2008
.......
Wed Jun 04 09:39:20 GMT 2008

竟然只有一分来钟

程序代码 程序代码

it=session.createQuery("from TgovMaterial").setFirstResult(1).setMaxResults(50).iterate();



Wed Jun 04 09:41:43 GMT 2008Hibernate: select top 51 tgovmateri0_.Id as col_0_0_ from [Material-08].dbo.tGovMaterial tgovmateri0_
....
Wed Jun 04 09:41:43 GMT 2008

不到1秒

程序代码 程序代码

it=session.createQuery("from TgovMaterial").setFirstResult(1000000).setMaxResults(60).iterate();



Wed Jun 04 09:53:15 GMT 2008Hibernate: select top 1000060 tgovmateri0_.Id as col_0_0_ from [Material-08].dbo.tGovMaterial tgovmateri0_
....
Wed Jun 04 09:53:18 GMT 2008

程序代码 程序代码

it=session.createQuery("from TgovMaterial").setFirstResult(1300000).setMaxResults(60).iterate();



Wed Jun 04 09:55:09 GMT 2008Hibernate: select top 1300060 tgovmateri0_.Id as col_0_0_ from [Material-08].dbo.tGovMaterial tgovmateri0_
...
Wed Jun 04 09:55:13 GMT 2008

程序代码 程序代码

it=session.createQuery("from TgovMaterial").setFirstResult(10000).setMaxResults(60).iterate();


Wed Jun 04 09:55:53 GMT 2008Hibernate: select top 10060 tgovmateri0_.Id as col_0_0_ from [Material-08].dbo.tGovMaterial tgovmateri0_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值