Cur*_*tis 1 php mysql sql mysqli
这基本上是我的PHP脚本中存储的内容
$query = $db->query("
SELECT *
FROM `media`
WHERE `id` > '$last_id'
AND `accounts_used` != ''
ORDER BY `id` ASC
LIMIT 100
");
foreach($query['results'] as $row) {
$last_id = $row['id'];
$accounts_used = explode(", ",$row['accounts_used']);
$db->connect();
foreach($accounts_used as $liked_account) {
$account_id = str_replace(" ","",$liked_account);
$media_id = $row['id'];
$insert_array = array(
"account_id" => $account_id,
"media_id" => $media_id,
"timesent" => "0000-00-00 00:00:00"
);
$db->insert("media_likes", $insert_array);
}
$db->disconnect();
}
Run Code Online (Sandbox Code Playgroud)
一个例子$row['accounts_used']是这样的
61519, 65894, 63561, 61718, 63567, 66924, 66979, 66972, 66637, 66295, 66842, 64775, 51898, 64631, 65044, 67226, 67582, 66861, 51543, 61564, 65597, 66863
Run Code Online (Sandbox Code Playgroud)
平均而言,该accounts_used行包含大约1000/2000个唯一ID,用逗号分隔,我想根据逗号进行爆炸,并将每个ID插入另一个表中.
media_id包含一个大约5位左右的整数值,大致account_id相同
这个脚本需要大约3分钟才能完成,有哪些具体方法可以改进这些功能?或者更快的方法呢?
我可以看到一些可能有助于熄灭的事情:
1 - 在处理的每一行数据之后打开和关闭数据库连接(不要)
2 - 您可以使用预准备语句让mysql连接"预编译"您的insert语句
3 - 在插入周围使用事务,这样您的索引只会更新一次
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |