Chunk large writes into batches to reduce contention and WAL spikes.

Section: High-value Query Performance Patterns

Batch updates

sql
sql
UPDATE orders
SET archived_at = now()
WHERE order_id IN (
  SELECT order_id FROM orders WHERE created_at < now() - interval '1 year' LIMIT 10000
);
Explanation

See summary for usage details.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing High-value Query Performance Patterns
Keyset pagination
Prefer keyset pagination over deep OFFSET scans for large result sets.
OpenIn sheetsqlsame section
Select needed columns
Avoid fetching unnecessary columns, especially wide rows.
OpenIn sheetsqlsame section
Covering index with INCLUDE
Use included columns to support index-only reads for certain queries.
OpenIn sheetsqlsame section
Batch deletes
Delete in chunks to avoid huge transactions.
OpenIn sheetsqlsame section
Create range-partitioned table
Partition large time-series tables by range.
OpenIn sheetsqlsame section
Attach partition
Add a partition for a date range.
OpenIn sheetsqlsame section