为什么这个简单的PHP / MySql脚本执行这么长时间?

时间:2014-08-13 11:41:02

标签: mysql database database-design

我有一个包含大约50,000条记录的数据库表。我正在运行一个用PHP编写的脚本,它将连接到我的数据库并更新每条记录。然而,这需要一段难以想象的长时间才能完成(我通过浏览器运行脚本并且它超时。当我尝试在本地数据库上运行它时,它运行了40多分钟但仍然没有完成)。 / p>

我得到了什么:

每个条目都有 ID 用户名 JSON blob 的表格。

Json blob:

{
    "user": {
        "Country": {
            "US": {
                "item": {
                    "property1": "value1",
                    "propertyBool": true,
                    "property2": "value2"
                }
            }
        },
        "Subscription": {
            "subscribed": false
        }
    }
}

我需要做什么:

我需要解析JSON blob并在Country属性下添加更多国家/地区(新国家/地区将具有与当前(美国)相同的结构,但值不同。) item下的属性对于每个用户都是不同的,我需要为每个用户单独解析JSON。

最后,我希望我的JSON blob结构看起来像这样:

{
    "user": {
        "Country": {
            "US": {
                "item": {
                    "property1": "value1",
                    "propertyBool": true,
                    "property2": "value2"
                }
            },

            "CA": {
                "item": {
                    "property1": "otherValue",
                    "propertyBool": true,
                    "property2": "yetAnotherValue"
                }
            }
        },
        "Subscription": {
            "subscribed": false
        }
    }
}

这是我在PHP脚本中运行的代码来更新它:

<?php

    db_connect();

    /*Get each user from the DB*/
    $qry_users = mysql_query("SELECT * FROM users WHERE 1 = 1");

    /*Loop through each entry in DB*/
    while($row = mysql_fetch_assoc($qry_users)){
        /*Parsing the blob*/
        $user = json_decode($row['user']);

        $jsonAddition = /*parsing JSON here for the new bit of JSON that will be added in*/

        /*Adding the new Country to our current JSON blob*/
        $user->Country->CA = $jsonAddition;

        /*encoding JSON for adding it to DB*/
        $user = json_encode($user);

        /*Updating the current entry in the loop with the new JSON blob*/
        mysql_query("UPDATE users SET user = '$user' where userId = '".$row['userId']."' ");
    }
?>

有谁知道为什么这需要很长时间才能执行?有没有办法加快速度?

0 个答案:

没有答案