Оптимизация скорости при выполнении запроса «выбор» в большом цикле

Я выполняю простой запрос «выбор» в цикле Java, как показано ниже. Размер Списка может увеличиваться до 10000+. Как я могу улучшить скорость запроса? Любой пример или совет приветствуются. Благодарю.

Обратите внимание, что мне нужно получить все данные в каждом столбце этой таблицы, поэтому используется звездочка (*).

List<String> valueList = ....
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    conn = DriverManager.getConnection(dbURL, dbUsername, dbPassword);
    for (int m = 0; m < valueList.size() ; m++) {    
         String sql = "SELECT * FROM WORKSHEET WHERE " + sheetId + " = '" +    
                      valueList.get(m) + "'";
         ps = conn.prepareStatement(sql);
         rs = ps.executeQuery();
         // retreive data....           
    }
}

Изменить: В конце концов, есть несколько способов ускорить этот запрос. Я использую второй способ, так как он предотвращает в будущем ошибку ORA-04031.

  1. Используйте параметризованный запрос «SELECT» с предложением «IN».
  2. Создайте вложенную таблицу и приведите массив / список элементов, поступающих из JDBC, в созданную вложенную таблицу.
  3. Создайте временную таблицу и вставьте список элементов. Затем выполните ПРИСОЕДИНЕНИЕ к основной таблице (1 запрос) и получите результаты.
7
задан Wilts C 7 July 2011 в 06:25
поделиться