SQL批量删除

我在sql Server 2005中有一个表,其中有大约40亿行.我需要删除大约20亿的这些行.如果我尝试在单个事务中执行此操作,则事务日志将填满并失败.我没有任何额外的空间使事务日志更大.我认为最好的方法是批量删除语句(分批〜10,000?).

我可以用光标来做这个,但是这样做的标准/简单/聪明的方式呢?

附:此表不具有作为PK的身份列. PK由整数外键和日期组成.

解决方法

您可以“删除删除,这也意味着您不会对数据库造成大量负载.如果您的t-log备份每10分钟运行一次,那么您应该在同一时间间隔内运行一次或两次.您可以将其调度为sql代理作业

尝试这样的东西:

DECLARE @count int
SET @count = 10000

    DELETE  FROM table1 
    WHERE table1id IN (
        SELECT TOP (@count) tableid
        FROM table1
        WHERE x='y'
    )

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...