Основное преимущество PreparedStatement
с, когда у вас есть код, который ведет себя подобным образом к этому псевдокоде:
PreparedStatement ps = con.prepareStatement("blabalblabla");
for (int i = 0; i < a gazillion times; i++) {
// Set parameters into ps
...
// execute already prepared statement
ps.execute();
}
То есть , вы готовите один раз и выполняете много раз, каждый раз с различными наборами параметров. Это позволяет драйверу/базе данных выполнять потенциально дорогостоящие операции (например, синтаксический анализ) только один раз, а затем повторно использовать эту работу. Кроме того, использование PreparedStatement
может быть интерпретировано как подсказка для драйвера о том, что он должен кэшировать эти ресурсы инструкций или что-то, потому что он будет использоваться позже, но я не думаю, что это будет иметь такое же влияние, как «подготовить один раз выполнить многие «подходы».
Ваше использование конкатенации для добавления имен таблиц не приведет к отключению оптимизаций, которые делает ваш драйвер JDBC (если есть). Но в любом случае, если ваш код делает больше «подготовить один раз выполнить один раз», чем он «готовит один раз выполнить многие», то PreparedStatement может иметь только незначительное преимущество в производительности.
Обратите внимание, что все вышеперечисленное отличается высокой базой данных/драйвером. Например, Oracle выполняет много лучше, если вы используете PreparedStatement
s так, как я описал как «подготовить один раз выполнить многие». И как последний совет, не забывайте, что вам следует избегать конкатенации значений параметров, если у вас нет другого варианта, как для производительности, так и для целей И БЕЗОПАСНОСТИ.
Разве это не все преимущества подготовленного заявления? Нет, это не так. Читать [Когда мы используем PreparedStatement вместо Statement?] (Http://stackoverflow.com/questions/2099425/when-we-use-preparedstatement-instead-of-statement) и Read [когда использовать StringBuilder в java] (http : //stackoverflow.com/questions/4645020/when-to-use-stringbuilder-in-java) – Braj
Я знаю о StringBuilder и об этом преимуществах над конкатенацией строк.В случае добавления только имени таблицы я думаю, что StringBuilder избыточен. –
Ответ на ваш вопрос в первой ссылке. Второй - только предложение. – Braj