En realidad, hace la diferencia.
Cuando tiene INSERT
s por separado, debe tener cuidado de hacerlo dentro de una transacción, para que tenga un estado constante en todo momento. Pero, dado que están separados, la cantidad de memoria requerida para que el servidor se complete es menor porque cada INSERT
tiene su propio conjunto de resultados: cuando la consulta finaliza, el servidor puede realizar otra consulta, etc.
Cuándo tiene todo dentro de una gran consulta unida por UNION ALL
, el servidor necesitaría más tablas temporales y más memoria para completar. Pero, de esta manera, tiene algo de una inserción 'masiva', y podría dar como resultado una inserción más rápida.
Personalmente, iría con inserciones separadas dentro de una transacción. A veces, simplemente haciendo algo más simple es mucho más beneficioso en términos de mantenimiento y depuración que una pequeña ganancia de rendimiento (si corresponde, depende del número de filas que realmente se inserten)
es posible hacer esto en una sola inserción sin las uniones pero es increíblemente desordenado (créanme, he tenido una oportunidad) –