Ускорить вставку запроса MySQL

Я хочу вставить около 10000 новых строк в существующую таблицу, которая уже содержит 10000 строк. Мне нужно получить идентификатор вставки для запроса и использовать этот идентификатор в другой функции внутри цикла, как показано в коде ниже.

foreach($values as $val){
  $sql = "INSERT INTO wp_posts (`post_author`, `post_date`, `post_content`, `post_title`, `post_excerpt`, `post_status`,`post_modified`,`post_type`)
  VALUES('".$val[author]."',NOW(),'".$val[content]."','".$val[title]."','".$val[excerpt]."','published',NOW(),'post')";
  $result = mysql_query($sql);
  $insertid = mysql_insert_id();
  add_post_meta($insertid, $val[metakey], $val[metaval], true );
}

Я выбираю значения для массива $ values из файла CSV. На данный момент я могу вставить только 20 новых строк за 3 минуты. Есть ли способ ускорить эту прошивку?

 Arun V Kumar08 нояб. 2012 г., 22:29
двигатель MyISAM.
 Arun V Kumar08 нояб. 2012 г., 22:30
Мне нужно запустить этот скрипт, чтобы вставить значения в таблицу сообщений WordPress и таблицу метаданных. Так что я не могу использовать Navicat
 jcho36008 нояб. 2012 г., 22:22
структура таблицы? индекс? двигатель?
 Arun V Kumar08 нояб. 2012 г., 22:31
@sonofagun я пытаюсь этот скрипт на моем локальном сервере.
 Joshua Dwire08 нояб. 2012 г., 22:39
Вы можете попробовать опубликовать это наcodereview.stackexchange.com.
 John Dvorak08 нояб. 2012 г., 22:23
@ jcho360 выглядит как база данных Wordpress
 sonofagun08 нояб. 2012 г., 22:26
Это не должно быть где-то близко к этому медленному (20 рядов / 3 минуты). Оптимизация запроса выигранаt решить проблему - сначала рассмотрите использование памяти, пропускную способность сети и т. д.
 ajtrichards08 нояб. 2012 г., 22:22
Можно'т вы используете графический интерфейс, как Navicat, чтобы импортировать их?

Ответы на вопрос(1)

посмотрите, поможет ли это.

$sql =     "INSERT INTO wp_posts (`post_author`, `post_date`, `post_content`, `post_title`, `post_excerpt`, `post_status`,`post_modified`,`post_type`)
            VALUES(:author,NOW(),:content,:title,:excerpt,'published',NOW(),'post')";
$pdoStatement = $pdoConnexion->prepare($sql);

foreach($values as $val){
    $pdoStatement->bindValue(':author', $val['author'], PDO::PARAM_STR);
    $pdoStatement->bindValue(':content', $val['content'], PDO::PARAM_STR);
    $pdoStatement->bindValue(':title', $val['title'], PDO::PARAM_STR);
    $pdoStatement->bindValue(':excerpt', $val['excerpt'], PDO::PARAM_STR);
    $pdoStatement->execute();
    $insertid = $pdoConnexion->lastInsertId();
    add_post_meta($insertid, $val[metakey], $val[metaval], true );
}

Ваш ответ на вопрос