PHP MySQL选择&;每分钟更新所有行(~10000)

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-

我想从每一行中选择三件事,然后更新每一行。 使用cronjobs,代码每分钟都在运行。 但是,在可接受的时间范围内更新所有行需要很长时间。 这就是它现在的样子:

    $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最终这就是你的代码对每行所做的:他选择名称、速度、金额。然后他更新数量=(数量+速度)