2015-05-17 95 views
0

以下查詢:MySQL的更新運行緩慢

UPDATE `zydushr`.`performance` AS a1 , `zydusquiz`.`performance` AS a2 
SET a1.`Sales` = a2.`AchievementHQ` WHERE a1.`EmpNo` = a2.`EmpNo` 
AND a1.`Month` = a2.`Month` AND a1.`Year` = a2.`Year` ; 

的運行速度非常慢。我如何加快速度?

注:我已經創建了索引。

+0

你的問題詢問有關SQL服務器,但你的標籤包括MySQL,這是什麼? –

+0

a1和a2表有多大? – Edig

+0

它可以超過447949條記錄 –

回答

1
UPDATE 
`zydushr`.`performance` AS a1 
JOIN `zydusquiz`.`performance` AS a2 
ON a1.`EmpNo` = a2.`EmpNo` 
AND a1.`Month` = a2.`Month` 
AND a1.`Year` = a2.`Year` 
SET a1.`Sales` = a2.`AchievementHQ` 
+0

很好的關注他使用的十字連接。 – JRLambert

+0

它也需要與上面相同的時間...我已經運行查詢,但仍然在運行階段... –

+0

這不是一個交叉連接 - 請參閱'WHERE'子句。 (但是,'JOIN ... ON'是更好的形式。) –

0

對於速度,你需要一個複合指數:

INDEX(emp_no, year, month) 

也就是說一樣INDEX(emp_no), INDEX(year), INDEX(month)

對日期和時間組件分別設置列通常是不好的做法。