Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Postgres performance optimization and best practices guide maintained by Supabase
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/data-batch-inserts.md
1---2title: Batch INSERT Statements for Bulk Data3impact: MEDIUM4impactDescription: 10-50x faster bulk inserts5tags: batch, insert, bulk, performance, copy6---78## Batch INSERT Statements for Bulk Data910Individual INSERT statements have high overhead. Batch multiple rows in single statements or use COPY.1112**Incorrect (individual inserts):**1314```sql15-- Each insert is a separate transaction and round trip16insert into events (user_id, action) values (1, 'click');17insert into events (user_id, action) values (1, 'view');18insert into events (user_id, action) values (2, 'click');19-- ... 1000 more individual inserts2021-- 1000 inserts = 1000 round trips = slow22```2324**Correct (batch insert):**2526```sql27-- Multiple rows in single statement28insert into events (user_id, action) values29(1, 'click'),30(1, 'view'),31(2, 'click'),32-- ... up to ~1000 rows per batch33(999, 'view');3435-- One round trip for 1000 rows36```3738For large imports, use COPY:3940```sql41-- COPY is fastest for bulk loading42copy events (user_id, action, created_at)43from '/path/to/data.csv'44with (format csv, header true);4546-- Or from stdin in application47copy events (user_id, action) from stdin with (format csv);481,click491,view502,click51\.52```5354Reference: [COPY](https://www.postgresql.org/docs/current/sql-copy.html)55