以下查询: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条记录 –