テーブルに入力する必要のあるレコードが1つ多くあります。クエリでこれを行う最良の方法は何ですか?ループを作成し、反復ごとに1つのレコードを挿入する必要がありますか?または、より良い方法がありますか?
MySQLマニュアル から
VALUES構文を使用するINSERTステートメントは、複数の行を挿入できます。これを行うには、それぞれが括弧で囲まれ、コンマで区切られた列値の複数のリストを含めます。例:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
ほとんどの場合、MySQLクライアントで作業しているわけではないため、適切なAPIを使用して挿入をまとめてバッチ処理する必要があります。
例えば。 JDBCの場合:
connection con.setAutoCommit(false);
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();
prepStmt.setString(1,mgrnum2);
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();
int [] numUpdates=prepStmt.executeBatch();
Insert into table(col1,col2) select col1,col2 from table_2;
以下にアクセスしてください:http://dev.mysql.com/doc/refman/5.5/en/insert.html
ロードデータインファイルクエリははるかに優れたオプションですが、GoDaddyなどの一部のサーバーは共有ホスティングでこのオプションを制限するため、2つのオプションのみが残り、1つはすべての反復またはバッチ挿入でレコードを挿入しますが、クエリがこれを超える場合、バッチ挿入には文字の制限がありますmysqlに設定されている文字数が多いとクエリがクラッシュします。したがって、バッチ挿入でチャンクにデータを挿入することをお勧めします。これにより、データベースとの接続数を最小限に抑えることができます。
mysqlでは、複数の行を一度に挿入できます INSERT manual