MySql-更新一个包含1000行的表需要30秒

MySql-更新一个包含1000行的表需要30秒,mysql,Mysql,我有一张1000行的桌子。我使用光标选择循环中的每一行,并更新每一行上的值。该表只有一个主键,没有索引。select和update语句仅使用主键ID。在没有数据库加载的情况下,更新所有1000行的操作只需31秒。当我在DB上运行一些东西时,这会上升到80秒以上 有人能给我解释一下为什么在数据库上完全没有负载的情况下,1000行需要30秒以上的时间来执行吗 谢谢 代码如下: DECLARE curPlayers CURSOR FOR SELECT Id, T

我有一张1000行的桌子。我使用光标选择循环中的每一行,并更新每一行上的值。该表只有一个主键,没有索引。select和update语句仅使用主键ID。在没有数据库加载的情况下,更新所有1000行的操作只需31秒。当我在DB上运行一些东西时,这会上升到80秒以上

有人能给我解释一下为什么在数据库上完全没有负载的情况下,1000行需要30秒以上的时间来执行吗

谢谢

代码如下:

DECLARE curPlayers CURSOR FOR
    SELECT
        Id,
        Turns,
        Money,
        Morale,
        MissilePower,
        TurnsPerUpdate,
        MoneyPerUpdate,
        MoralePerUpdate,
        MissilePowerPerUpdate,
        AvailableLandToPurchase,
        TS
    FROM player;

OPEN curPlayers;

FETCH curPlayers INTO
            vPlayerId,
            vPlayerTurns,
            vPlayerMoney,
            vPlayerMorale,
            vPlayerMissilePower,
            vPlayerTurnsPerUpdate,
            vPlayerMoneyPerUpdate,
            vPlayerMoralePerUpdate,
            vPlayerMissilePowerPerUpdate,
            vPlayerAvailableLandToPurchase,
            vPlayerTS;

-- ...Some simple sets on the vNewTurns variables used below...

UPDATE player SET
            Turns = vNewTurns,
            Money = vNewMoney,
            Morale = vNewMorale,
            MissilePower = vNewMissilePower,
            AvailableLandToPurchase = vNewAvailableLandToPurchase
        WHERE
            Id = vPlayerId;

为什么要这样做,而不是使用单一的
更新
查询?如果你展示你的代码,我们几乎可以肯定地向你展示一种更有效的方式。游标速度很慢。在一个语句中执行,并将thr表连接在一起,以真正快速地执行,因为每行我必须计算一些值,我将使用这些值更新该行。我已注释掉“UPDATE”语句并保留了计算,该操作需要0.03秒。在另一台服务器上,使用相同的数据运行该操作需要0.5秒。它运行在新安装的Windows Server 2008 R2 12GB四核计算机上。