MySql - 更新包含1,000行的表需要30秒

时间:2014-08-27 22:04:49

标签: mysql

我有一个包含1000行的表。我使用游标选择循环中的每一行,并更新每行的值。该表有一个主键,没有索引。 select和update语句只是使用主键ID。更新所有1,000行的操作在没有数据库负载的情况下花费了31秒。当我在数据库上运行一些事情时,这会超过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;

0 个答案:

没有答案