Eu não sou um programador Rust, mas as considerações de desempenho devem ser semelhantes, independentemente da linguagem do aplicativo.
Para este caso, eu apenas prepararia uma consulta para INSERT uma linha, com parâmetros para as colunas dessa linha. Em seguida, execute um loop para executar a consulta preparada com valores diferentes para os parâmetros. Isso exclui do loop a sobrecarga de analisar o SQL, porque isso é feito apenas uma vez na etapa de preparação. A execução dessa consulta preparada não analisa novamente a instrução.
Espero que seja exatamente isso que o
exec_batch()
está fazendo. Mas pode estar preparando novamente a instrução INSERT toda vez no loop. Isso seria uma abordagem ingênua, mas não sei se o pacote Rust é ingênuo ou não. Se o desempenho não for suficiente, considere carregar grandes quantidades de dados usando CARREGAR DADOS [LOCAL] INFILE . Isso é normalmente várias vezes mais rápido do que qualquer instrução INSERT, mesmo com um conjunto de 1.000 tuplas.
Você pode gostar da minha apresentação Carregar dados rapidamente! em que comparei o desempenho relativo de diferentes soluções de importação de dados.