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

Mysql 如何有效地从表B中删除与表A相同的行,mysql,Mysql,我有一个巨大的表a,其中有N>2m行,应该使用外部API服务的数据定期更新。因为表是巨大的,并且有一些很重的索引,所以我在尽可能少地进行更新调用方面有很大的压力 为了实现这一点,我制作了一个临时表B,在这里我推送从API服务获得的所有数据,然后使用JOIN进行更新,在一次操作中更新数千(60k>N>50k)行 情况是,我正在更新记录,即使这两个表之间的记录相同。我的问题是,是否有比下面更有效的方法从表B中删除相同的行,这样我就不会在调用时尝试更新它们: DELETE del FROM B del

我有一个巨大的表a,其中有N>2m行,应该使用外部API服务的数据定期更新。因为表是巨大的,并且有一些很重的索引,所以我在尽可能少地进行更新调用方面有很大的压力

为了实现这一点,我制作了一个
临时表
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列来命名我想要避免的内容…

很难说,但您可以尝试像这样的
自然连接

DELETE del
FROM B del
NATURAL JOIN E