Optimisation des insertions multi-lignes avec PreparedStatement
Au départ, l'insertion de lignes dans une table MySQL à l'aide d'une boucle et d'appels PreparedStatment individuels était une pratique courante . Cependant, pour améliorer les performances, il est souhaitable d'utiliser la syntaxe prise en charge par MySQL pour les insertions multi-lignes.
Batching avec PreparedStatement
Un PreparedStatement offre une solution pour des insertions multi-lignes optimisées. insertions de lignes par lots. En utilisant la méthode PreparedStatement#addBatch(), plusieurs instructions SQL sont accumulées dans un lot. Ces instructions sont ensuite exécutées simultanément via PreparedStatement#executeBatch().
L'exemple de code suivant illustre cette approche :
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. } } } }
Ressources supplémentaires
Pour plus de détails sur cette technique, reportez-vous aux ressources suivantes :
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!