12.29
- 唯一索引冲突的替换删除(REPLACE INTO,原子操作)
sql
-- 存在则删旧插新,无则直接插入(依赖唯一索引,如name)
REPLACE INTO user (id, name, email)
VALUES (1001, 'Alice', 'alice_new@example.com');
- REPLACE:先删冲突行再插入,原子性操作,适合需更新唯一键数据的场景。
- 按时间窗口+索引的高效删除(大表清理,避免全表扫描)
sql
-- 按创建时间+索引删,每次1000条,低峰期执行
DELETE FROM order_log
WHERE create_time BETWEEN '2025-01-01' AND '2025-03-31'
LIMIT 1000;
- 条件带索引,分批删避免锁表,适合清理指定时间段的归档数据。
- 关联视图删除(MySQL 8.0+,基于视图筛选条件)
sql
-- 先建视图(筛选待删用户)
CREATE VIEW v_inactive_users AS
SELECT id FROM user WHERE last_login < DATE_SUB(NOW(), INTERVAL 180 DAY);
-- 关联视图删除(先查视图验证,再删)
DELETE u FROM user u
JOIN v_inactive_users v ON u.id = v.id;
- 视图封装筛选逻辑,删除时复用视图条件,适合多场景复用筛选规则。

浙公网安备 33010602011771号