Если вам нужна более быстрая скорость, используйте команду prepare / fetch, чтобы движку SQL не приходилось каждый раз анализировать текстовую строку.
$name = $age = '';
$insert_stmt = $db->prepare("insert into table (name, age) values (:name, :age)");
$insert_stmt->bindValue(':name', $name);
$insert_stmt->bindValue(':age', $age);
// do your loop here, like fgetcsv
while (get the data) {
list($name, $age) = split(',', $string);
$insert_stmt->execute();
}
Это нелогично, чтоВы делаете связывание вне цикла, но это одна из причин, почему этот метод такой быстрый, вы в основном говорите: «Выполните этот предварительно скомпилированный запрос, используя данные из этих переменных».Так что даже не нужно перемещать данные внутри.И вы хотите избежать повторного разбора запроса, что является проблемой, если вы используете что-то вроде «вставить в таблицу (имя) значения ('$ name')», каждый запрос отправляет всю текстовую строку в базу данных для повторного анализа.parsed.
Еще одна вещь, чтобы ускорить его - обернуть весь цикл в транзакцию, а затем зафиксировать транзакцию, когда цикл завершится.