Существуют различные альтернативные подходы, которые мы можем использовать для предложения IN в PreparedStatement.
- Использование одиночных запросов - самая медленная производительность и ресурсоемкость
- Использование StoredProcedure - самая быстрая, но база данных специфический
- Создание динамического запроса для PreparedStatement - Хорошая производительность, но не получает преимущества кэширования, и PreparedStatement перекомпилируется каждый раз.
- Использовать NULL в запросах PreparedStatement - Оптимальная производительность, отлично работает, когда вы знаете предел аргументов предложения IN. Если ограничений нет, вы можете выполнять запросы в пакетном режиме. Пример фрагмента кода;
int i = 1;
for(; i <=ids.length; i++){
ps.setInt(i, ids[i-1]);
}
//set null for remaining ones
for(; i<=PARAM_SIZE;i++){
ps.setNull(i, java.sql.Types.INTEGER);
}
Здесь вы можете узнать подробнее об этих альтернативных подходах здесь .
задан Zoe 27 February 2019 в 15:08
поделиться