Saya memiliki 1-banyak jumlah catatan yang perlu dimasukkan ke dalam tabel. Apa cara terbaik untuk melakukan ini dalam kueri? Haruskah saya membuat satu lingkaran dan memasukkan satu catatan per iterasi? Atau ada cara yang lebih baik?
Saya memiliki 1-banyak jumlah catatan yang perlu dimasukkan ke dalam tabel. Apa cara terbaik untuk melakukan ini dalam kueri? Haruskah saya membuat satu lingkaran dan memasukkan satu catatan per iterasi? Atau ada cara yang lebih baik?
Jawaban:
Dari manual MySQL
Masukkan pernyataan yang menggunakan sintaks VALUES dapat menyisipkan beberapa baris. Untuk melakukan ini, sertakan beberapa daftar nilai kolom, masing-masing terlampir di dalam tanda kurung dan dipisahkan dengan koma. Contoh:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
max_allowed_packet
Sebagian besar waktu, Anda tidak bekerja di klien MySQL dan Anda harus memasukkan secara bersamaan menggunakan API yang sesuai.
Misalnya di 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;
Silakan merujuk ke dokumentasi MySQL pada Pernyataan INSERT
insert into select from
kinerja? apakah itu secepat memasukkan massal?
Memuat kueri infil data adalah opsi yang jauh lebih baik tetapi beberapa server seperti godaddy membatasi opsi ini pada shared hosting jadi, hanya dua opsi yang tersisa kemudian satu adalah masukkan catatan pada setiap iterasi atau masukkan batch, tetapi masukkan batch memiliki keterbatasan karakter jika kueri Anda melebihi ini jumlah karakter yang diatur dalam mysql maka permintaan Anda akan macet, Jadi saya sarankan memasukkan data dalam potongan dengan memasukkan batch, ini akan meminimalkan jumlah koneksi yang dibuat dengan database.
LOAD DATA LOCAL INFILE '/users/name/txt.file'
mysql memungkinkan Anda untuk memasukkan banyak baris sekaligus. INSERT manual
INSERT
mendukung ini secara asli !