2015-11-12 5 views
-1

Каков наилучший способ для Select, а затем Insert больших данных в базу данных (InnoDB Engine)?PHP MySQL «Выберите», затем «Вставить» Большие данные

У меня есть более 60000 строк, которые необходимо вставить из другого стола без результата LIMIT.

Есть ли способ предотвратить чрезмерное потребление памяти моего сервера или ускорить запрос? Могу ли я разделить запрос, допустив, что LIMIT 5000 до его полного копирования всех данных?

это пример запроса:

$query = 'SELECT * FROM orig_table WHERE user_id = 1 AND sent = 0'; // more than 60000 rows 

if ($query) { 
    foreach ($query as $row) { 
    'INSERT INTO copy_table VALUE()';  
    } 
} 
+3

Возможный дубликат [Форсирование большое количество MySQL обновлений и вставок] (HTTP: // StackOverflow. com/questions/3952288/speeding-up-large-numbers-of-mysql-updates-and-inserts) – Terminus

+1

[Вы можете напрямую вставлять результаты запроса select] (https://dev.mysql.com/doc/ RefMan/5.6/о/вставка-select.html) – Terminus

ответ

1

Может просто выполнить в в одном запросе

insert into copytable (column1,column2) 
SELECT column1,column2 FROM orig_table WHERE user_id = 1 AND sent = 0 
Смежные вопросы