PHP MySQL选择&;每分钟更新所有行(~10000)
我想从每一行中选择三件事,然后更新每一行。 使用cronjobs,代码每分钟都在运行。 但是,在可接受的时间范围内更新所有行需要很长时间。 这就是它现在的样子:PHP MySQL选择&;每分钟更新所有行(~10000),php,mysql,Php,Mysql,我想从每一行中选择三件事,然后更新每一行。 使用cronjobs,代码每分钟都在运行。 但是,在可接受的时间范围内更新所有行需要很长时间。 这就是它现在的样子: $update_query = "UPDATE game_1 SET amount=? WHERE name=?"; $count_query = "SELECT COUNT(*) FROM game_1"; $stmt = $conn->prepare($count_query); $stmt-
$update_query = "UPDATE game_1 SET amount=? WHERE name=?";
$count_query = "SELECT COUNT(*) FROM game_1";
$stmt = $conn->prepare($count_query);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();
echo $count . "\n";
$select_query = "SELECT name, speed, amount FROM game_1 LIMIT ?,1";
echo $select_query . "\n";
while($count != 0)
{
$stmt = $conn->prepare($select_query);
$counted = $count-1;
$stmt->bind_param("i", $counted);
$stmt->execute();
$stmt->bind_result($name, $speed, $amount);
$stmt->fetch();
$stmt->close();
$stmt = $conn->prepare($update_query);
$newamount = $amount+$speed;
$stmt->bind_param("is", $newamount, $name);
$stmt->execute();
$stmt->close();
echo "Updated row " . $count . "\n";
$count--;
}
exit;
有没有更好的表演
无脚本在我看来,你基本上是在做这个
updategame\u 1 SET amount=amount+speed
只会让事情变得更加复杂,以后请不要发布代码的图片。以文本形式发布代码,但每行都有amount=amount+speedWell最终这就是你的代码对每行所做的:他选择名称、速度、金额。然后他更新数量=(数量+速度)