当前位置: 首页 > 面试题库 >

SQL批量删除

荆运诚
2023-03-14
问题内容

我在SQL Server
2005中有一张表,其中有大约40亿行。我需要删除大约20亿行。如果我尝试在单个事务中执行此操作,则事务日志将填满,并且将失败。我没有多余的空间来增加事务日志。我认为最好的方法是批处理delete语句(约10,000个批?)。

我可能可以使用游标执行此操作,但是这样做是一种标准/简单/明智的方法吗?

PS此表没有标识列作为PK。PK由整数外键和日期组成。


问题答案:

您可以“蚕食”删除操作,这也意味着您不会对数据库造成很大的负担。如果您的t-
log备份每10分钟运行一次,那么您可以在相同的时间间隔内运行一次或两次。您可以将其安排为SQL Agent作业

尝试这样的事情:

DECLARE @count int
SET @count = 10000

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


 类似资料:
  • 本文向大家介绍mysql批量删除大量数据,包括了mysql批量删除大量数据的使用技巧和注意事项,需要的朋友参考一下 mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wai

  • 问题内容: 在SQL Server中有批量删除的解决方案吗? 我不能使用TRUNCATE,因为我想使用WHERE来限制行。 是否有诸如批量复制(bcp)之类的用于删除数据的东西? 问题答案: 不。 您需要带WHERE子句的DELETE:这是标准SQL。 您可以做的是批量删除,如下所示: 或者,如果您要删除很高比例的行…

  • 问题内容: 我正在使用reactFire,Firebase和reactJS构建一个简单的待办事项应用程序。我遇到的问题是当我尝试批量删除列表中已完成的条目时。 该循环过早结束,即在删除所有完成的条目之前,因为调用了render函数。 问题答案: 您可以使用多位置更新一次性删除所有已完成的项目:

  • 问题内容: 首先,我要说我正在SQL Server 2005上运行,所以我没有访问权限。 我有一个约有15万行的表,每天都要从一个文本文件中进行更新。当行从文本文件中掉出时,我需要从数据库中删除它们,如果它们发生更改或是新的,则需要相应地进行更新/插入。 经过一些测试,我发现从性能角度来看,完全删除然后从文本文件中批量插入要比逐行读取文件进行更新/插入要快得多,这是指数级的。但是,我最近遇到了一些

  • 问题内容: 我有一个具有主键和称为的列的270k行数据库,并且我有一个带有Mid和值的文本文件。现在,我想更新表,以便将每个值分配给正确的中间值。 我当前的方法是从C#中读取文本文件,并为读取的每一行更新表中的一行。必须有一种更快的方式来做我感觉到的事情..有什么想法吗? 编辑:表中还有其他列,所以我真的需要根据中点 更新 的方法。 问题答案: 您可以使用SQL Server导入和导出向导: ht

  • 本文向大家介绍PHP实现批量删除(封装),包括了PHP实现批量删除(封装)的使用技巧和注意事项,需要的朋友参考一下 前台 后台 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!