php - mySQLi 永远插入脚本

标签 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();
}

$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

accounts_used 行平均包含大约 1000/2000 个用逗号分隔的唯一 ID,我想根据逗号展开并将每个 ID 插入另一个表.

media_id 包含一个大约 5 位长的整数值,account_id 大致相同

这个脚本大约需要 3 分钟才能完成,有什么具体的方法可以改进这种功能吗?或者更快的方法?

最佳答案

我看到的一些可能有助于解决问题的事情:

1 - 在处理完每行数据后打开和关闭数据库连接(不要)

2 - 您可以使用准备好的语句让 mysql 连接“预编译”您的插入语句

3 - 围绕插入使用事务,这样您的索引只会更新一次

关于php - mySQLi 永远插入脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21004754/

相关文章:

mysql - 如何使用php将excel中的数据导出到mysql?

android - 如何将 Android 数据库与在线 SQL Server 同步?

java - Java 中的PreparedStatement,带有数据库和列名变量

按连续外键​​值分组的 MySQL 查询

php - Laravel 7 在作业类中动态设置日志路径

php - 正则表达式字边界替代

mysql - 在数据库中存储每次行程在每个州行驶的距离

php - 为什么身份验证 token 被认为是无状态的,而 session 则不是?

php 调整大小脚本不适用于透明 gif

c# - Double 未正确存储在 MySQL 数据库中