Если вы вставляете или обновляете один и тот же SQL (исключая параметры) несколько раз, то SQLPrepare, SQLBindParameter и SQLExecute будут работать быстрее, чем SQLExecDirect каждый раз.Рассмотрим:
SQLPrepare("insert into mytable (cola, colb) values(?,?);");
for (n = 0; n < 10000; n++) {
SQLBindParameter(1, n);
SQLBindParameter(2, n);
SQLExecute;
}
и
for (n = 0; n < 10000; n++) {
char sql[1000];
sprintf("insert into mytable (cola, colb) values(%d,%d)", n, n);
SQLExecDirect(sql);
}
В первом примере оператор готовится один раз, и, следовательно, движок БД должен только один раз его проанализировать и один раз выработать план выполнения.Во втором примере sql и параметры передаются каждый раз, и SQL каждый раз выглядит по-разному, поэтому он анализируется каждый раз.
Кроме того, в первом примере вы можете использовать массивы параметров для передачи нескольких строкпараметры за один раз - см. SQL_PARAMSET_SIZE.
См. 3.1.2 Вставка данных для работающего примера и указание того, сколько времени вы можете сэкономить.
Игнорировать сетевой трафиквы будете просто вторым догадываться о том, что происходит под капотом в драйвере.
ДОПОЛНЕНИЕ: Что касается вашего описания того, что происходит с параметрами, где, как вам кажется, драйвер преобразует их в строки;Другое преимущество параметров привязки состоит в том, что вы можете предоставить их в одном типе и попросить драйвер использовать их в качестве другого типа.Вы можете обнаружить тип параметра, который не может быть легко представлен в виде строки без добавления какой-либо функции преобразования, которую можно избежать с помощью параметра.