我知道周围有类似的线程,但这是我第一次意识到查询速度可能会影响我 - 所以我真的很难从其他人那里转移问题。
话虽如此,我已成功使用以下查询与较小的数据,但如果我在适度大的表(大约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个小时。这是正常的吗?我只需要等待。我真的不知道,但我很确定一个人可以做得更好,因为这是我第一次尝试。
我读到了关于索引的内容,但我不知道在我的情况下要索引什么?
感谢您提出任何建议 - 请随时指出我的初学者指南!
答案 0 :(得分:1)
为您加入的内容编制索引。在这种情况下,在table1.id和table2.id上创建索引。你可能也应该有一个从一个表到另一个表的外键,虽然没有有意义的名字,但很难就方向提出建议。
答案 1 :(得分:1)
假设id
是自动增量PK,DISTINCT
是无用的,因为每一行都是唯一的。在这种情况下,删除它也应该提高性能,因为SELECT DISTINCT可能会很慢。
如前所述,请确保id
字段在两个表上都有索引(如果它是PK,它会执行)。
答案 2 :(得分:0)
唯一认为你可以索引,可能会让你获得一些速度是连接的关键(md.id和pd.id)。由于它们很可能是主键,因此它们应该已经编入索引。也许聚集索引会带来一些东西。
DISTINCT真的有必要吗?它只是删除重复项,如果源表中有重复的entrys,这只能是可能的。我认为DISTINCT是这里最大的问题。