我知道周围有类似的线程,但这真的是我第一次意识到查询速度可能会影响我 - 所以我真的不容易从其他人那里转移问题。
话虽这么说,我已经成功地使用了较小数据的以下查询,但如果我将它用于稍微大一点的表(大约 120,000 条记录)。我等了几个小时。
INSERT INTO anothertable
(id,someint1,someint1,somevarchar1,somevarchar1)
SELECT DISTINCT md.id,md.someint1,md.someint1,md.somevarchar1,pd.somevarchar1
FROM table1 AS md
JOIN table2 AS pd
ON (md.id = pd.id);
表 1 和表 2 包含大约 120,000 条记录。该查询现在已经运行了将近 2 个小时。这是正常的吗?我只需要等待吗?我真的不知道,但我很确定有人可以做得更好,因为这是我的第一次尝试。
我阅读了有关索引的内容,但还不知道在我的情况下要索引什么?
感谢您的任何建议 - 请随时将我指向非常初学者的指南!
最佳答案
假设 id
是一个自动递增的 PK,DISTINCT
是无用的,因为每一行都是唯一的。在这种情况下,删除它也应该会提高性能,因为 SELECT DISTINCT 可能会非常慢。
并且如前所述,确保 id
字段在两个表上都有索引(如果它是 PK,它就会这样做)。
关于mysql - 提高 MySQL 中 JOIN 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052009/