Я пришел к описанию ниже, в котором рассказывается о улучшении производительности, которое мы получаем с классом JPBC PreparedStatement.Как подготовленный оператор улучшает производительность
Если вы отправляете новое, полное заявление SQL для каждого запроса или обновления для базы данных, база данных должна анализировать SQL и запросов создать план запроса. Повторно используя существующее PreparedStatement, вы можете повторно использовать как анализ SQL-запросов, так и план запросов для последующих запросов. Этот ускоряет выполнение запроса, уменьшая синтаксический анализ и запрос накладные расходы на планирование каждого исполнения.
Скажем, я создаю заявление и предоставляя различные значения во время выполнения запросов, как это:
String sql = "update people set firstname=? , lastname=? where id=?";
PreparedStatement preparedStatement =
connection.prepareStatement(sql);
preparedStatement.setString(1, "Gary");
preparedStatement.setString(2, "Larson");
preparedStatement.setLong (3, 123);
int rowsAffected = preparedStatement.executeUpdate();
preparedStatement.setString(1, "Stan");
preparedStatement.setString(2, "Lee");
preparedStatement.setLong (3, 456);
int rowsAffected = preparedStatement.executeUpdate();
тогда я все еще получаю выигрыш в производительности, потому что я пытаюсь установить различные значения, так что я могу генерируемый окончательный запрос изменяется на основе значений.
Не могли бы вы объяснить, когда мы получим выгоду от производительности? Должны ли значения быть одинаковыми?
Точнее, Oracle необходимо выполнить «мягкий» синтаксический анализ, то есть поиск из кеша курсора, вместо «жесткого» анализа (что дорого) в следующий раз, когда он сталкивается с тем же самым заявлением. –