Именно так и должно быть. В теории. Препарированные запросы как раз и должны ускорять одинаковые запросы с различающимися данными.
Но время работы мерить надо. У меня нет данных о том, насколько быстры препарированные запросы.
Ну тогда я лучше сформирую строку запроса и отправлю обычным query().
Еще такой вопрос о prepared statement, как организовать чтобы insert был подготовлен, а потом биндить параметры, если изначально количество вставляемых строк не известно?
Возможно ли так?
Так препаруется запрос на вставку 1 строки и потом биндится столько, сколько нужно.
$stmt=$mysqli->prepare('INSERT INTO `test` (`f1`) VALUES (?)');
for($i=0;$i<10;$i++){
$stmt->bind_param('i',$i);
$stmt->execute();
}
Тоесть так? Если $stmt->execute(); вынести за пределы цикла, то вставляется 1 строка.
А так получается каждая строка вставляется отдельным запросом?
Что не верно?
ЗЫ PHP 5.3.8 , MySQL 5.6
Я бы вытянул в массив id'шники юзверей, убрал бы подзапрос.
так и сделал.
Еще такой вопрос о prepared statement, как организовать чтобы insert был подготовлен, а потом биндить параметры, если изначально количество вставляемых строк не известно?
Возможно ли так?
Второй запрос может добавить за раз около 5000 строк, правильно ли я получаю pid ?
работа этих запросов будет раз в неделю, но с большим количеством строк (Добавление)
Мелкий пишет:
snikers987, любой ключ, в том числе и первичный, может быть составным. Для уникального или первичного составного ключа поведение будет соответствовать именно описанному в задаче.