Bastantes razones, en realidad, pero las principales son:
-
Por lo general, las aplicaciones cliente esperan la confirmación de un
INSERTel éxito antes de enviar el siguiente. Entonces, hay un retraso de ida y vuelta para cadaINSERT, retrasos en la programación, etc. (PgJDBC admite canalizaciónINSERTs en lotes, pero no conozco ningún otro cliente que lo haga). -
Cada
INSERTtiene que pasar por todo el ejecutor. El uso de una declaración preparada evita la necesidad de ejecutar el analizador, la reescritura y el planificador, pero todavía hay un estado de ejecución para configurar y desmontar para cada fila.COPYhace algo de configuración una vez y tiene un extremadamente baja sobrecarga para cada fila, especialmente cuando no hay disparadores involucrados.
El primer punto es el más significativo. Se trata de viajes de ida y vuelta en la red y retrasos en la reprogramación.