我对Mysql有问题。
所以我有下一个查询:
UPDATE jugador j
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 0) p1 ON j.Id = p1.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 1) p2 ON j.Id = p2.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 2) p3 ON j.Id = p3.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 3) p4 ON j.Id = p4.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 4) p5 ON j.Id = p5.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 5) p6 ON j.Id = p6.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 6) p7 ON j.Id = p7.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 7) p8 ON j.Id = p8.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 8) p9 ON j.Id = p9.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, Puntuacion_Decimal AS Puntuacion FROM puntuacion WHERE Validado = 1 AND IndiceLast = 9) p10 ON j.Id = p10.FK_Jugador
LEFT JOIN (SELECT FK_Jugador, SUM(Puntuacion) AS TotalPuntuacion FROM puntuacion WHERE Validado = 1 GROUP BY FK_Jugador) pt ON j.Id = pt.FK_Jugador
SET j.Puntuacion = pt.TotalPuntuacion,
j.U1 = p1.Puntuacion,
j.U2 = p2.Puntuacion,
j.U3 = p3.Puntuacion,
j.U4 = p4.Puntuacion,
j.U5 = p5.Puntuacion,
j.Jugando = FALSE,
j.Valor = POW((0.181818182*IFNULL(p1.Puntuacion, 3.5) + 0.163636364*IFNULL(p2.Puntuacion, 3.5) + 0.145454545*IFNULL(p3.Puntuacion, 3.5) + 0.127272727*IFNULL(p4.Puntuacion, 3.5) + 0.109090909*IFNULL(p5.Puntuacion, 3.5) + 0.090909091*IFNULL(p6.Puntuacion, 3.5) + 0.072727273*IFNULL(p7.Puntuacion, 3.5) + 0.054545455*IFNULL(p8.Puntuacion, 3.5) + 0.036363636*IFNULL(p9.Puntuacion, 3.5) + 0.018181818*IFNULL(p10.Puntuacion, 3.5)), 1.125) WHERE j.FK_Equipo = 1232
问题是,当我在我的本地主机上工作时,它工作得很好,只需要1秒,但当我把它上传到我的服务器时,它需要30秒。
有人知道为什么会这样吗?我该怎么解决?
提前感谢!
目前我不得不改变一切,并在PHP中使用循环,但我想在Mysql中修复它。
1条答案
按热度按时间4uqofj5v1#
我 只是 在 每个 LEFT JOIN 中 使用 GROUP BY 修复 了 它