Eigentlich eine ganze Reihe von Gründen, aber die wichtigsten sind:
-
Typischerweise warten Clientanwendungen auf die Bestätigung eines
INSERT
's Erfolg, bevor Sie den nächsten senden. Es gibt also eine Umlaufverzögerung für jedesINSERT
, Planungsverzögerungen usw. (PgJDBC unterstützt die Pipelineverarbeitung vonINSERT
s in Stapeln, aber mir ist kein anderer Client bekannt, der dies tut). -
Jedes
INSERT
muss durch den ganzen Testamentsvollstrecker gehen. Die Verwendung einer vorbereiteten Anweisung umgeht die Notwendigkeit, den Parser, Rewriter und Planner auszuführen, aber es gibt immer noch einen Executor-Zustand, der für jede Zeile eingerichtet und abgebaut werden muss.COPY
macht einige Einstellungen einmal und hat eine extreme Geringer Overhead für jede Zeile, insbesondere wenn keine Trigger beteiligt sind.
Der erste Punkt ist der wichtigste. Es dreht sich alles um Netzwerk-Roundtrips und Umplanung von Verzögerungen.