Мне нужен размер ResultSet запроса, и я делаю это с помощью следующего кода:
int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}
Чем я повторяю ResultSet с классическим:
while (rs.next()) {
// do some
}
Теперь, если у меня есть, например, 200 строк внутри моего ResultSet, время выполнения итерации составляет около 500 миллисекунд. Если я выполню первую часть кода (чтобы получить размер ResultSet), время выполнения итерации уменьшится до 50 миллисекунд.
это, вероятно, происходит потому, что данные кэшируются, есть ли способ избежать этого или очистить кеш?
Спасибо
Привет, ребята, и спасибо за ответы, так что:
1) Мне нужно знать, сколько строк в наборе результатов, потому что некоторые запросы извлекают тысячи записей, и мне нужно информировать пользователя о проценте прогресса. Для этого мне явно нужны максимальное значение и промежуточные значения.
2) Как говорит Боб Джарвис, я хочу повторить набор результатов так же медленно, как сначала, это довольно глупо, но я не могу отправить сообщение клиенту с интервалами менее 100 миллисекунд, и если я получу ResultSet как написано выше (первая часть кода) информация о прогрессе довольно бесполезна.
Например: для набора результатов, содержащего 600 строк, требуется 500 миллисекунд:
int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}
и 60, чтобы повторить его, как показано ниже:
while (rs.next()) {
// do some
}
Чем, возможно, я могу потратить несколько секунд, чтобы выполнить итерацию набора результатов медленнее, но предоставить пользователю более точную информацию о времени выполнения какой-либо разработки.
Спасибо всем.