Apabila cuba memasukkan banyak baris dengan cekap ke dalam jadual MySQL, seseorang mungkin menghadapi batasan dengan pendekatan PreparedStatement tradisional kerana ia tidak boleh bilangan baris yang hendak disisipkan ditentukan terlebih dahulu dalam PreparedStatement.
Untuk mengoptimumkan proses sisipan, MySQL menyediakan sintaks sisipan kelompok, seperti berikut:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Gunakan PreparedStatement untuk sisipan kelompok
Gunakan PreparedStatement Langkah-langkah untuk memasukkan kelompok adalah seperti berikut:
Kod sampel:
public void save(List<Entity> entities) throws SQLException { try ( Connection connection = database.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_INSERT); ) { int i = 0; for (Entity entity : entities) { statement.setString(1, entity.getSomeProperty()); // ... statement.addBatch(); i++; if (i % 1000 == 0 || i == entities.size()) { statement.executeBatch(); // Execute every 1000 items. } } } }
Perlu diambil perhatian bahawa apabila melakukan penyisipan kelompok, adalah disyorkan untuk melaksanakannya setiap bilangan baris tertentu (untuk contoh, 1000), kerana sesetengah pemacu atau pangkalan data JDBC mungkin mempunyai had pada panjang kelompok.
Rujukan berkaitan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Berbilang Baris dengan Cekap ke dalam MySQL Menggunakan PreparedStatement?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!