以下查詢: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` ;
的運行速度非常慢。我如何加快速度?
注:我已經創建了索引。
以下查詢: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` ;
的運行速度非常慢。我如何加快速度?
注:我已經創建了索引。
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`
很好的關注他使用的十字連接。 – JRLambert
它也需要與上面相同的時間...我已經運行查詢,但仍然在運行階段... –
這不是一個交叉連接 - 請參閱'WHERE'子句。 (但是,'JOIN ... ON'是更好的形式。) –
對於速度,你需要一個複合指數:
INDEX(emp_no, year, month)
也就是說不一樣INDEX(emp_no), INDEX(year), INDEX(month)
。
對日期和時間組件分別設置列通常是不好的做法。
你的問題詢問有關SQL服務器,但你的標籤包括MySQL,這是什麼? –
a1和a2表有多大? – Edig
它可以超過447949條記錄 –