Я пытаюсь экспортировать результаты запроса в 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](https://i.stack.imgur.com/9OXns.gif)
Кажется, что rs.next()
вызывает проблемы с производительностью. Есть ли лучший способ приблизиться к этому, который более эффективен?
Не точный запрос, но измененный в соответствии с приведенным выше синтаксисом: «ВЫБЕРИТЕ корову, лошадь, овцу FROM Farm_Table;» В нем также есть диапазоны дат для оператора WHERE, но я не использую их, так как просто выбираю все.
Я использую Java 6, полагаю, что версия JDBC - это spring-jdbc-3.0.6, и я не установил размер выборки.