sql >> Database >  >> RDS >> Mysql

Rust:Hoe draaien we een DML op MySQL met veel parameters?

Ik ben geen Rust-programmeur, maar de prestatieoverwegingen zouden gelijk moeten zijn, ongeacht de taal van de applicatie.

Voor dit geval zou ik gewoon een query voorbereiden om één rij in te voegen, met parameters voor de kolommen van die ene rij. Voer vervolgens een lus uit om de voorbereide query uit te voeren met verschillende waarden voor de parameters. Dit zorgt ervoor dat de overhead van het parseren van de SQL buiten de lus valt, omdat dat maar één keer wordt gedaan tijdens de voorbereidingsstap. Als u die voorbereide query uitvoert, wordt de instructie niet opnieuw geparseerd.

Ik hoop dat dit precies is wat de exec_batch() doet. Maar het kan zijn dat de INSERT-instructie elke keer in de lus opnieuw wordt voorbereid. Dat zou een naïeve benadering zijn, maar ik weet niet of het Rust-pakket naïef is of niet.

Als dit niet voldoende is, kunt u overwegen om grote hoeveelheden gegevens te laden met LAAD GEGEVENS [LOKAAL] INFILE . Dat is meestal meerdere keren sneller dan een INSERT-instructie, zelfs met een set van 1000 tuples.

Misschien vind je mijn presentatie Laad gegevens snel! waarin ik de relatieve prestaties van verschillende oplossingen voor gegevensimport vergeleek.



  1. Hoe kan ik OR-voorwaarde gebruiken in MySQL CASE-expressie?

  2. RPostgreSQL - R-verbinding met Amazon Redshift - Grotere datasets SCHRIJVEN/posten

  3. PGSQL niet geladen in PHP 5.3 Windows onder IIS

  4. Hoe stel je een AUTO_INCREMENT-veld in om te beginnen met de waarde 6000 in mysql?