Parlando del db, hai provato a commentare gli inserimenti e vedere il tempo di esecuzione di quanto migliora? Perchč probabilmente sono gli insert a mangiarsi la maggior parte del tempo.
Una prova che puoi fare č usare insert multiriga tipo:
Magari cominci con 100 inserimenti alla volta. E vedi se migliora la situazione.codice:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);