我想比較具有超過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'子句,只有三個值。 –