如何更快地执行此PHP脚本更新字段?

时间:2013-06-09 11:42:48

标签: mysql

<?
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执行而不是使用此代码。

感谢所有的帮助,非常感谢,我一定会尽可能地回报你。

编辑:感谢您教我这项新技术,我会尝试并更新我的主题。

2 个答案:

答案 0 :(得分:2)

我认为使用UPDATE的{​​{1}}查询会比循环

更快
INNER JOIN

答案 1 :(得分:1)

您可以加入表,然后在单个SQL查询中执行更新:

UPDATE pokemon
LEFT JOIN users
ON pokemon.owner = users.username
SET pokemon.user = users.id