SQL查询太长了

时间:2015-09-15 18:23:31

标签: mysql sql

我正在运行下面的requery来清理一个表,但我的状态是“发送数据”几个小时。这是一个MySQL DB。

DELETE TABLE_INIT FROM DEM_annonces_urlproduit TABLE_INIT
LEFT OUTER JOIN (
                    SELECT MIN(id_url) as id, id_ann
                    FROM DEM_annonces_urlproduit
                    GROUP BY id_ann
                ) AS TABLE_1
                ON TABLE_INIT.id_url = TABLE_1.id
WHERE TABLE_1.id IS NULL

该表具有以下结构

id_url | id_ann | url | eaa

我的主键是id_anl,并在id_ann上编制了索引表。

我有大量相同的数据要删除,并将id_ann设置为修复我的问题的主键。表中有13M行。

我需要在几个时间内完成吗?清理餐桌的最佳方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

尝试优化您的陈述:

DELETE FROM DEM_annonces_urlproduit
WHERE id NOT IN (
      SELECT MIN(id_url)
      FROM DEM_annonces_urlproduit
      GROUP BY id_ann
)

当它没有变得更好时,循环选择

  SELECT MIN(id_url) id, id_ann
  FROM DEM_annonces_urlproduit
  GROUP BY id_ann

并仅在群组内删除

DELETE FROM DEM_annonces_urlproduit
WHERE id <> current.id
AND id_ann = current.id_ann