Data Batch Inserts
title: Batch INSERT Statements for Bulk Data impact: MEDIUM impactDescription: 10-50x faster bulk inserts tags: batch, insert, bulk, performance, copy
Section titled “title: Batch INSERT Statements for Bulk Data impact: MEDIUM impactDescription: 10-50x faster bulk inserts tags: batch, insert, bulk, performance, copy”Batch INSERT Statements for Bulk Data
Section titled “Batch INSERT Statements for Bulk Data”Individual INSERT statements have high overhead. Batch multiple rows in single statements or use COPY.
Incorrect (individual inserts):
-- Each insert is a separate transaction and round tripinsert into events (user_id, action) values (1, 'click');insert into events (user_id, action) values (1, 'view');insert into events (user_id, action) values (2, 'click');-- ... 1000 more individual inserts
-- 1000 inserts = 1000 round trips = slowCorrect (batch insert):
-- Multiple rows in single statementinsert into events (user_id, action) values (1, 'click'), (1, 'view'), (2, 'click'), -- ... up to ~1000 rows per batch (999, 'view');
-- One round trip for 1000 rowsFor large imports, use COPY:
-- COPY is fastest for bulk loadingcopy events (user_id, action, created_at)from '/path/to/data.csv'with (format csv, header true);
-- Or from stdin in applicationcopy events (user_id, action) from stdin with (format csv);1,click1,view2,click\.Reference: COPY