我使用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
上有一个索引。