12.23

  1. 带LOW_PRIORITY+IGNORE的删除(低优先级+忽略错误)

sql
-- 低优先级执行(不抢资源),忽略因外键/重复等导致的错误
DELETE LOW_PRIORITY IGNORE FROM user WHERE register_time < '2023-01-01';

  • LOW_PRIORITY:等读操作完成再执行删除,适合业务高峰
  • IGNORE:跳过报错行继续删,避免一条错导致全量失败
  1. 分区表定向删除(只删指定分区数据,高效)

sql
-- 删sales表中2024年第一季度分区数据(分区表专用)
DELETE FROM sales PARTITION (p2024q1);

-- 示例:删多个分区
DELETE FROM sales PARTITION (p2024q1, p2024q2);

  • 只操作指定分区,不扫全表,大表删除速度极快
  • 需表提前创建分区(如按时间/范围分区)
  1. USING子句多表删除(简洁关联删,MySQL 8+友好)

sql
-- 删除订单表中,用户表标记为删除的订单(USING写法更直观)
DELETE o
FROM orders o
USING orders o
JOIN user u ON o.user_id = u.id
WHERE u.is_deleted = 1;

  • 关联逻辑清晰,和JOIN写法功能一致,适合复杂多表关联场景
posted @ 2025-12-23 22:02  喜欢写轻小说的日央  阅读(2)  评论(0)    收藏  举报