我使用Mysql,我有一个约有80万条记录的表(TablaUnoOriginal),我需要将数据复制到另一个表(TablaUnoCopia),然后删除原始数据,我正在做以下工作:

INSERT INTO TablaUnoCopia
SELECT * FROM TablaUnoOriginal
WHERE CampoID in (SELECT DISTINCT (CampoID) FROM Key_Table);


在查询的这一部分中,“ SELECT_DISTINCT(CampoID)FROM Key_Table”返回了552条记录。

CampoID是TablaUnoOriginal和Key_Table表中的索引列(主键)。

以下查询返回大约150条记录,并且执行该查询将花费7秒钟。

SELECT DISTINCT (CampoID) FROM Key_Table


运行查询时,通过插入1104行需要446秒。

如何优化此查询?

谢谢。

最佳答案

通过简单的联接使用DISTINCT

INSERT INTO TablaUnoCopia
SELECT DISTINCT t.*
FROM TablaUnoOriginal t
JOIN Key_Table k ON t.CampoID = k.CampoID


确保在CampoID上有一个索引。

07-24 15:58