2017-01-02 206 views
1

私は表1に100,000行を持っていると私は同じデータを表2を作成したい(どちらも同じ構造を持っている)ので、私は"INSERT INTO SELECT"が挿入だけよりも遅いのはなぜですか?

INSERT INTO table2 SELECT * FROM table1を行なったし、それは約15秒かかりました。

PHPで私が

while (SELECT * FROM table1){ 

    INSERT INTO table2... 

} 

を行う場合、これは10秒かかります。 selectへの挿入が遅いのはなぜですか?

+0

チェックを1回または複数回実行しましたか?それは平均的なものか 'insert into select'はいつも遅いですか? – Dekel

+0

MySQLの 'SELECT'クエリは、' INSERT'と比較して賢明な量のリソースを使います。最初のクエリでは100.000のSELECTクエリを実行しますが、PHPでは1つしか実行しません。 – icecub

+0

各テストを2回実行します。両方のタイミングを見てみましょう。キャッシング_それを説明するかもしれない。 –

答えて

0

"SELECT * FROM table1"を含むクエリを実行して結果を反復すると、table1からのデータの選択に関連する1つのクエリのみが実行されます。

ただし、挿入内に「SELECT * FROM table1」を実行すると、1行選択と100 000挿入の代わりに100 000選択と100 000挿入が行われます。

私が間違っていると誰かが私を修正してください、私はこの答えを削除します。

関連する問題