Mysql查询在localhost上需要1秒,但在服务器上需要30秒

4dbbbstv  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(144)

我对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中修复它。

4uqofj5v

4uqofj5v1#

我 只是 在 每个 LEFT JOIN 中 使用 GROUP BY 修复 了 它

相关问题