我想比较具有超过1,000,000行的同一个表的值。以下是我的查询,需要大约25秒才能获得结果。MySQL加入性能真的很慢
EXPLAIN SELECT DISTINCT a.studyid,a.number,a.load_number,b.studyid,b.number,b.load_number FROM
(SELECT t1.*, buildnumber,platformid FROM t t1
INNER JOIN testlog t2 ON t1.`testid` = t2.`testid`
WHERE (buildnumber =1031719 AND platformid IN (SELECT platformid FROM platform WHERE platform.`Description` = "Windows 7 SP1"))
)AS a
JOIN
(SELECT t1.*,buildnumber,platformid FROM t t1
INNER JOIN testlog t2 ON t1.`testid` = t2.`testid`
WHERE (buildnumber =1030716 AND platformid IN (SELECT platformid FROM platform WHERE platform.`Description` = "Windows 7 SP1"))
)AS b
ON a.studyid=b.studyid AND a.load_number = b.load_number AND a.number = b.number
你能谁能帮我改善查询以获得足够快的结果吗? 这里的问题是,即使我有number和load_number索引,查询不会使用它。我不知道为什么它总是被忽略..
感谢。
1)看来你不需要两个子查询。只需将所有表格连在一起。 2)不要使用IN(),这对MySQL来说可能很慢。改用连接。 3)不要在子查询中使用*。 – Tim3880
感谢您的评论,我已经使用所有表格的加入,但它会让情况变得更糟糕。如果我通过电子邮件向您发送邮件,您是否可以使用此表格进行游戏? –
你的'选择'是荒谬的。您正在选择六列,但根据'on'子句,只有三个值。 –