Un certain nombre de raisons, en fait, mais les principales sont :
-
Généralement, les applications clientes attendent la confirmation d'un
INSERT
avant d'envoyer le suivant. Il y a donc un délai aller-retour pour chaqueINSERT
, retards de planification, etc. (PgJDBC prend en charge le pipelineINSERT
s par lots, mais je ne connais aucun autre client qui le fasse). -
Chaque
INSERT
doit passer par tout l'exécuteur testamentaire. L'utilisation d'une instruction préparée évite la nécessité d'exécuter l'analyseur, le réécrivain et le planificateur, mais il reste un état d'exécuteur à configurer et à supprimer pour chaque ligne.COPY
fait une configuration une fois, et a un extrêmement faible surcharge pour chaque ligne, en particulier lorsqu'aucun déclencheur n'est impliqué.
Le premier point est le plus significatif. Il s'agit d'allers-retours sur le réseau et de retards de reprogrammation.