這裏的基本存儲的內容我PHP腳本mysqli的插入腳本到永遠
$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分鐘即可完成,任何特定的方法來改善這種功能的整數值?或者更快的方法來做到這一點?
「唯一的ID被用逗號分隔,」 arggggg正常化! – 2014-01-08 19:29:32
如果要插入很多行,則需要使用事務。發生什麼事是在每次插入之後,它需要更新索引。在交易中,只有在交易完成後纔會這樣做。這應該加快速度。 –
SELECT *是一個真正的數據庫殺手。 – Jonast92