У меня есть Java-программа, которая должна итерации через HashMap
получить параметры, которые затем используются для запроса базы данных MySQL. Код выглядит следующим образом:Выполнение одного и того же запроса запроса несколько раз с различными параметрами: Mysql
Iterator<Entry<String, Double>>it = ws.entrySet().iterator();
Connection con = null;
while(it.hasNext())
{
Entry<String, Double>pairs = it.next();
PreparedStatement ps = con.prepareStatement("select doc_freq from lookup where word=?");
ps.setString(1, pairs.getKey());
ResultSet rs = ps.executeQuery();
}
Процесс неоднократно обращается к базе данных для каждой итерации цикла (которая составляет около 500 раз) замедляет мое приложение. Есть ли способ отправить все эти параметры сразу, чтобы я мог получить доступ к базе данных только один раз?
Вы можете создать временную таблицу и сохраните 'pairs.getKey()' значения внутри него, а затем использовать оператор 'JOIN' должен оповестить вашу таблицу и вашу временную таблицу для извлечения данных. Конечно, не забудьте удалить временную таблицу, когда закончите ее использовать (на всякий случай RDBMS не справится с этим для вас). –
Является ли запрос медленным? Где ваш цикл обработки проводит большую часть времени? – dcernahoschi
Прочитайте это: [Batching Select Statement в JDBC] (http://www.javaranch.com/journal/200510/Journal200510.jsp#a2) – informatik01