Pour optimiser l'insertion de lignes dans une table MySQL, vous pouvez exploiter la syntaxe prise en charge :
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Cependant , si le nombre de lignes à insérer dynamiquement, l'utilisation d'un PreparedStatement peut être difficile.
Pour insérer dynamiquement plusieurs lignes à l'aide d'un PreparedStatement, vous pouvez créer un lot à l'aide de la méthode addBatch() et l'exécuter avec executeBatch().
Voici un exemple :
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. } } } }
Cette approche exécute le lot tous les 1 000 éléments, en tenant compte des limitations des pilotes JDBC ou du lot de base de données length.
Si l'utilisation d'un PreparedStatement avec traitement par lots n'est pas réalisable, les méthodes alternatives pour insérer plusieurs lignes incluent :
Références :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!