美文网首页Java学习笔记Java 杂谈
Java查询数据库获取总条数的方法及效率

Java查询数据库获取总条数的方法及效率

作者: truman12 | 来源:发表于2018-03-06 22:16 被阅读819次

    在做Java实践项目时,需要从数据库中查询数据并做分页展示。
    其中,在获取总条数的时候,一般能想到的有两种方式:
    A. 将查询结果存放在List中,再通过list.size()方法获得总条数;
    B. 通过count语句的sql查询,直接获得总条数;

    从个人经验和直观感受来看,A是在Java中计算,当数量大的时候,需要将结果存放在内存当中,这个过程肯定耗时更多一些,而B是直接在数据库查询得到一个数值,而且不需要查询出结果,因此应该是B方式的效率会更高一些。

    但是,在网上以及在项目中也有看到不少A方式的示例。在网上查阅了一些资料,有网友提到可以使用.size()方法获得,count的方式反而提的很少。

    这让我感觉到有些疑惑,究竟两种方式的效率如何?哪个会更优?

    于是我自己做了一个实验,如下:

     public void test() {
            //A方式
            long aStart = System.currentTimeMillis();
            List list = this.getaList(); //将查询结果存入list
            int totalCount = list.size();
            long aEnd =System.currentTimeMillis();
    
            //B方式
            long bStart = System.currentTimeMillis();
            int totalCount2 = this.getbCount(); //使用count语句查询
            long bEnd = System.currentTimeMillis();
    
            //结果输出
            System.out.println("A: total-" + totalCount + "; time-" + (aEnd - aStart));
            System.out.println("B: total-" + totalCount2 + "; time-" + (bEnd - bStart));
        }
    

    得到结果如下:
    A: total-28483; time-21940
    B: total-28483; time-321

    结论:使用count语句比list.size()的效率更高,尤其在数据量非常大的时候。

    相关文章

      网友评论

        本文标题:Java查询数据库获取总条数的方法及效率

        本文链接:https://www.haomeiwen.com/subject/igxdfftx.html