回答

收藏

SQL批量删除

技术问答 技术问答 212 人阅读 | 0 人回复 | 2023-09-14

我在SQL Server: T" e+ s# m5 K% w
2005年有一张桌子,大约有40亿行。我需要删除大约20亿行。如果我试图在单个事务中执行此操作,事务日志将被填写并失败。我没有额外的空间来增加事务日志。我认为最好的方法是批处理delete语句(约10000批?
& H, y9 u( b/ V, Q; j( U我可以用游标来做这个操作,但这是一种标准/简单/明智的方法吗?8 O* {9 u  k, X9 k; V
PS此表无标识列PK。PK由整数外键和日期组成。
, D2 L) _) W8 N5 T* U4 l  M                                                                6 x/ k: G" _+ X3 c" g
    解决方案:                                                               
% c, Y/ p/ D/ L5 K                                                                您可以蚕食删除操作,这意味着您不会对数据库造成太大负担。t-1 b5 }% B, S' Y! }
log备份每10分钟运行一次,可以在同一时间间隔内运行一两次。你可以安排它SQL Agent作业
/ Z8 @9 n, Y1 p$ S; N+ I. J试试这样的事:
  B2 @. o6 i- j$ C6 x( i* J* \- nDECLARE @count intSET @count = 10000    DELETE  FROM table1     WHERE table1id IN (       SELECT TOP (@count) tableid        FROM table        WHERE x='y
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则