<?
include 'database.php';
$user1 = mysql_query("SELECT id,username FROM `users` ORDER BY `id` ASC");
while($user = mysql_fetch_object($user1)) {
mysql_query("UPDATE `pokemon` SET `user`=$user->id WHERE `owner`='$user->username'");
}
?>
基本上,我的游戏中有超过30万用户,并且有数百万的“口袋妖怪”。
我在考虑使用整数作为外键而不是字符串,所以我创建了这个小小的脚本来为我做这个。
不幸的是,它似乎只是在过去一小时内更新了1000个用户,因此整个过程需要300个小时才能完成。有没有办法让这个脚本更有效率?
user
是新的唯一标识符,而owner
是旧的唯一标识符(外键)。
我的方法是否有替代解决方案需要不到3-4小时的时间?我确信必须有一些不错的小SQL查询,我可以通过phpMyAdmin执行而不是使用此代码。
感谢所有的帮助,非常感谢,我一定会尽可能地回报你。
编辑:感谢您教我这项新技术,我会尝试并更新我的主题。
答案 0 :(得分:2)
我认为使用UPDATE
的{{1}}查询会比循环
INNER JOIN
答案 1 :(得分:1)
您可以加入表,然后在单个SQL查询中执行更新:
UPDATE pokemon
LEFT JOIN users
ON pokemon.owner = users.username
SET pokemon.user = users.id