2017-01-02 13 views
1

У меня есть 100000 строк в table1, и я хочу, чтобы создать таблица2 с одинаковыми данными (они оба имеют одинаковую структуру), так что я сделалПочему «INSERT INTO SELECT» медленнее, чем просто вставки?

INSERT INTO table2 SELECT * FROM table1 и она занимает около 15 секунд.

Если в PHP я

while (SELECT * FROM table1){ 

    INSERT INTO table2... 

} 

это занимает 10 секунд. Почему вставить в select будет медленнее?

+0

Вы проверили проверку 1 раз или несколько раз? Среднее значение или «вставить в выбор» всегда медленнее? – Dekel

+0

В запросе MySQL 'SELECT' используется избыточное количество ресурсов по сравнению с' INSERT'. В первом запросе вы выполняете 100 000 запросов 'SELECT', тогда как внутри PHP вы выполняете только 1. – icecub

+0

Проведите каждый тест дважды; давайте посмотрим оба таймингов. Кэширование _may_ объясните это. –

ответ

0

Если вы выполняете запрос, содержащий «SELECT * FROM table1», затем перебираете результат, вы выполняете только один запрос, связанный с выбором данных из таблицы1.

Однако, если вы сделаете «SELECT * FROM table1» внутри вставки, я думаю, что он будет вставлять и выбирать для каждой строки, в результате чего 100 000 выборок, а также 100 000 вставок вместо 1 select и 100 000 insert ,

Не уверен, что 100%, поэтому, пожалуйста, поправьте меня, если я ошибаюсь, и я удалю этот ответ.

 Смежные вопросы

  • Нет связанных вопросов^_^