当前位置: 首页 > 知识库问答 >
问题:

删除id不在另一个表中的非常大的表记录

巫马修然
2023-03-14

我有一个表值,有8000万条记录。另一个表评估了拥有2.5亿条记录的_历史。

我想过滤values_history表,并希望保留在值表中预设id的唯一数据。

delete from values_history where id not in (select id from values);

这个查询需要很长时间,我不得不中止这个过程。

请提出一些想法来加速这个过程。

我可以一次删除100万条这样的记录吗?

共有1个答案

班承德
2023-03-14

我已提取出所需的记录并插入临时表。这花了2个小时之后,我放下表格,然后再次将提取的数据插入主表格。整个过程花了4个小时,这对我来说很好。在此之前,我已经放弃了外键和所有其他约束。。

 类似资料:
  • 问题内容: 我想删除另一个表示例中没有现有外键的所有行: 该 查询 将删除表2上ID为20和40的行。 我需要这样做,以便可以与table1和table2建立关系。 问题答案:

  • 我有两个表,一个有212,000条记录(不推荐使用的记录),另一个有10,500,000条记录 在删除记录之前使用外部联接有意义吗?我在想,如果可能的话,这可以帮助我跟踪被删除的内容

  • 问题内容: 我正在尝试删除mysql表中的孤立条目。 我有2张桌子,像这样: 表: 表: 该和列可以被用来连接表在一起。 我想删除表中所有在表中找不到的行。 因此,使用上面的示例将删除表中的行:3&4(s)。 问题答案: 使用LEFT JOIN / IS NULL: 使用不存在: 使用NOT IN: 警告 只要有可能,就在事务中执行DELETE(假设受支持-IE:不在MyISAM上),以便在出现问

  • 我在数据库中有两个带有绑定主键的表,我希望在它们之间找到一个不相交的集。例如 有列()和示例数据: 那么,我如何创建一个SQL查询,以便我可以从中获取没有在中的带有ID的行。在这种情况下,应该返回吗? PS:ID是这两个表的主键。

  • 问题内容: 我有以下两个表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或(感谢WOPR) (忽略这一点,正如其他人所说的那样,通常最好只选择所需的列,而不是’ ‘)

  • 问题内容: 我有以下两个SQL表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 任何帮助将非常感激。 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或者(由于Alterlife) 或(感谢WOPR) (如其他人所说,忽略它通常最好只选择想要的列