Ich bin kein Rust-Programmierer, aber die Leistungsüberlegungen sollten unabhängig von der Anwendungssprache ähnlich sein.
Für diesen Fall würde ich einfach eine Abfrage vorbereiten, um eine Zeile einzufügen, mit Parametern für die Spalten dieser einen Zeile. Führen Sie dann eine Schleife aus, um die vorbereitete Abfrage mit unterschiedlichen Werten für die Parameter auszuführen. Dadurch wird der Aufwand für das Analysieren der SQL aus der Schleife herausgerechnet, da dies nur einmal im Vorbereitungsschritt erfolgt. Durch Ausführen dieser vorbereiteten Abfrage wird die Anweisung nicht erneut analysiert.
Ich hoffe, das ist genau das, was exec_batch()
macht gerade. Aber es könnte die INSERT-Anweisung jedes Mal in der Schleife neu vorbereiten. Das wäre ein naiver Ansatz, aber ich weiß nicht, ob das Rust-Paket naiv ist oder nicht.
Wenn dies nicht leistungsfähig genug ist, sollten Sie erwägen, große Datenmengen mit LOAD DATA [LOCAL] INFILE . Das ist normalerweise um ein Vielfaches schneller als jede INSERT-Anweisung, selbst mit einer Menge von 1000 Tupeln.
Vielleicht gefällt Ihnen meine Präsentation Daten schnell laden! in dem ich die relative Leistung verschiedener Datenimportlösungen verglichen habe.