Java中查询结果上rs.next()的性能不佳

时间:2019-07-09 19:14:22

标签: java postgresql performance

我正在尝试将查询结果导出到CSV,但是即使我没有尝试导出到CSV,此问题仍然存在。以下代码与我的实际代码具有相同的逻辑和步骤,但这已更改了标头和变量名以使其更加清晰。 这是代码:

            rs = statement.executeQuery(query);

            //CSV HEADER
            outputLines.add("Cow"+d+"Horse"+d+"Sheep"+newLineDelimiter);
            int number =0;
            while(rs.next())
            {
                //This was added to see the output speed in catalina.out
                System.out.println(number);
                number++;
                Farm.LoadXmlByEntry(passStatement, rs.getFarm("entry_c"), tag);

                //Declares variables as well as puts them into correct type, then escapes them as to not break the CSV format, this is a string
                String cow = String.format("%s", Farm.CowNumber());
                String horse = String.format("%s", ticket.HorseNumber());
                String sheep = String.format("%s", ticket.SheepNumber());

                //this is just a simple escaping sequence so any entered characters do not break the CSV format
                cow   = Escape.CSV(cow);
                horse = Escape.CSV(horse);
                sheep = Escape.CSV(sheep);

                outputLines.add(cow+d+horse+d+sheep+newLineDelimiter);
            }

现在,我添加了number作为输出,因此我可以看到rs.next()的运行速度。当查询的实际响应非常快时,结果将非常缓慢。 这是数字计数的实时记录(随着数字的增加,它会减慢一点时间,周期性地增加行数5000 +):

Counting Speed

rs.next()似乎引起性能问题。 是否有更好的方法可以更有效地解决此问题?

不是确切的查询,而是进行了更改以匹配上面的语法“从Farm_Table中选择牛,马,羊”;它还具有WHERE语句的日期范围,但是我没有选择它们,因为我只选择了全部。

我正在使用Java 6,我相信JDBC版本是spring-jdbc-3.0.6,并且我尚未设置“提取大小”。

0 个答案:

没有答案