如何有效地从表B中删除与表A相同的行

时间:2016-06-28 08:10:10

标签: mysql

我有一个巨大的表 A ,其中N>应使用外部API服务的数据定期更新2m行。因为桌子很大并且有一些重型索引,所以我确实有尽可能少的更新呼叫的强大压力。

为了实现这一点,我正在制作TEMPORARY TABLE B ,我正在推送从API服务获得的每个数据,而不是使用JOIN进行更新,以更新数千(60k>一次操作中N> 50k)行。

案例是我正在更新记录,即使它们在这两个表之间是相同的。我的问题是,如果有一个比以下方法更有效的方法从表B中删除相同的行,那么我不会尝试在我的通话中更新它们:

DELETE del
FROM B del
INNER JOIN A
  ON del.id=A.id
WHERE
      del.col_1 = A.col_1
  AND del.col_2 = A.col_2
  ....

假设可能有超过15列列出我想要避免的内容......

1 个答案:

答案 0 :(得分:0)

很难说,但你可以试试这样的NATURAL JOIN

DELETE del
FROM B del
NATURAL JOIN E