Мой mysql-запрос в Java всегда останавливается (т.е. останавливается и не продолжается) в определенной позиции, а именно 543 858; хотя таблица содержит ок. 2 000 000 записей. Я проверил это, зарегистрировав текущую выборку результатов.
Это воспроизводимо и происходит каждый раз в одной и той же позиции.
"SELECT abc from bcd WHERE DATEDIFF(CURDATE(), timestamp) <= '"+days+"'");
Дополнение: определенно является ошибкой Java, я только что опробовал это утверждение в Navicat (время выполнения 50-х годов).
Похоже, что запрос зависает после того, как журнал сообщает мне, что теперь добавляется результат позиции 543 858.
try {
...
ResultSet res = new ResultSet();
PreparedStatement stmt = new PreparedStatement(); // prepare statmenet etc.
stmt.setFetchSize(Integer.MIN_VALUE);
res = stmt.executeQuery();
...
System.out.println(res.getStatement());
...
while (res.next())
treeSet.add(res.getString("userid"));
} catch (Exception e) {
e.printStackTrace();
}
Редактировать: Нам удалось выяснить проблему. Этот метод подойдет, и возвращенный результат (500 000 вместо 2 000 000) также является правильным (посмотрел в неправильном БД, чтобы проверить сумму); проблема заключалась в том, что следующий вызов метода, который использовал результат описанного выше, принимает буквально навсегда, но не реализовал регистрацию. Так что я был одурачен отсутствующими консольными журналами.
В любом случае, спасибо!