Java学习笔记Java 杂谈

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

2018-03-06  本文已影响819人  truman12

在做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()的效率更高,尤其在数据量非常大的时候。

上一篇下一篇

猜你喜欢

热点阅读