L'errore di timeout non saprei come evitarlo non sono espertissimo su questione di amministrazione. Puoi pero' nella select che estrae tutti i recordi mettere un WHERE id>X AND id<X+1300000 o qualche cosa di simile.

Queste condizioni le puoi scrivere nella stored procedure che ti ho postato al posto di "eventuali condizioni" dopo il WHERE come una normalissima query