Не съм програмист на Rust, но съображенията за производителност трябва да са подобни, независимо от езика на приложението.
За този случай просто бих подготвил заявка за INSERT един ред с параметри за колоните на този ред. След това изпълнете цикъл, за да изпълните подготвената заявка с различни стойности за параметрите. Това изключва от цикъла режийните разходи за анализиране на SQL, тъй като това се прави само веднъж на етапа на подготовка. Изпълнението на тази подготвена заявка не анализира повторно израза.
Надявам се, че това е точно това, което exec_batch()
прави. Но може да подготвя отново оператора INSERT всеки път в цикъла. Това би бил наивен подход, но не знам дали пакетът Rust е наивен или не.
Ако това не е достатъчно ефективно, трябва да помислите за зареждане на големи количества данни чрез ЗАРЕДЕТЕ ДАННИ [ЛОКАЛЕН] INFILE . Това обикновено е няколко пъти по-бързо от който и да е оператор INSERT дори с набор от 1000 кортежа.
Може да харесате моята презентация Бързо зареждане на данни! в който сравних относителната производителност на различни решения за импортиране на данни.