Der er faktisk en del årsager, men de vigtigste er:
-
Typisk venter klientapplikationer på bekræftelse af én
INSERT
's succes, før du sender den næste. Så der er en tur-retur-forsinkelse for hverINSERT
, planlægningsforsinkelser osv. (PgJDBC understøtter pipelineingINSERT
s i batches, men jeg er ikke bekendt med andre klienter, der gør det). -
Hver
INSERT
skal igennem hele bobestyreren. Brug af en forberedt erklæring omgår behovet for at køre parseren, genskriveren og planlæggeren, men der er stadig en eksekveringstilstand, der skal opsættes og rives ned for hver række.COPY
udfører nogle opsætninger én gang og har en ekstremt lav overhead for hver række, især hvor der ikke er nogen udløsere involveret.
Det første punkt er det vigtigste. Det handler om netværksrejser og omlægning af forsinkelser.