Hola de nuevo, el primer ejemplo crea todo el string de SQL por cada registro, es decir, al salir de bucle tendras
Código:
INSERT INTO tabla(campos) VALUES(valores);
INSERT INTO tabla(campos) VALUES(valores);
INSERT INTO tabla(campos) VALUES(valores);
INSERT INTO tabla(campos) VALUES(valores);
INSERT INTO tabla(campos) VALUES(valores);
Uno por cada registro, la finalidad de esto es que no ejecutes una una sentencia contra tu base de datos por cada registro, sino que ejecuta todo esto al final, no se si realmente ayudara mucho al proceso, pero me imagino que en algo debe ser mejor.
La segunda opcion hace un INSERT en masa a partir de un resultset de datos
Código:
INSERT INTO tabla(campos) SELECT campos FROM tabla_2
Lo cual es infinitamente mejor que traer un recordset, iterarlo e insertar registro por registro.
Saludos