MySQL
MySQL
UPDATE orders
SET synced = 1
WHERE synced = 0
ORDER BY id
LIMIT 1000;PostgreSQL
PostgreSQL
WITH batch AS (
SELECT ctid FROM orders
WHERE synced = false
ORDER BY id
LIMIT 1000
)
UPDATE orders o
SET synced = true
FROM batch b
WHERE o.ctid = b.ctid;| MySQL | 单表 UPDATE 可带 ORDER BY + LIMIT;每批一个短事务 |
|---|---|
| PostgreSQL | 无 LIMIT;用主键范围或 ctid 子查询切片 |
| 节奏 | 每批之间可加短暂 sleep,给复制与清理留出余量 |