我有一个包含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;