Я не верю, что незначительные изменения кода будут иметь существенное значение.Однако я бы наверняка использовал StringBuffer.
Он будет читать миллион строк по проводам, предполагая, что его база данных находится на отдельной машине.Во-первых, если производительность неприемлема, я запускаю этот код на сервере базы данных и отключаю сеть от уравнения.Если это тот код, который запускается раз в неделю как пакетное задание, то это может быть нормально.
Теперь, что вы собираетесь делать с StringBuffer или String после полной загрузки из базы данных?Мы смотрим на строку длиной 50 Мбайт.
Это должно быть на 1 йоту быстрее, поскольку она удаляет ненужную (i <5) проверку. </p>
StringBuilder sr = new StringBuilder();
int columnCount =rsMetaData.getColumnCount();
while (rset1.next()) {
for (int j = 1; j < columnCount; j++) {
sr.append(rset1.getString(j)).append(",");
}
// I suspect the 'if (j<5)' really meant, "if we aren't on the last
// column then tack on a comma." So we always tack it on above and
// write the last column and a newline now.
sr.append(rset1.getString(columnCount)).append("\n");
}
}
Другой ответ - изменить выбор, чтобы он возвращал строку с запятой.Затем мы читаем результат с одним столбцом и добавляем его в StringBuffer.
Я забыл синтаксис сейчас, но что-то вроде:
select column1 || "," || column2 || "," ... from table;
Теперь нам не нужно ставить циклы и запятуюконкатенационное дело.
StringBuilder sr = new StringBuilder();
while (rset1.next()) {
sr.append(rset1.getString(1)).append("\n");
}
}