2010-11-18 87 views
1
$_query = 'UPDATE ' . TABLE_A1 . ' SET active=0 WHERE user_id IN ('; 
       foreach ($newUsers as $newUser) { 
        $_query.=$newUser. ' ,'; 
       } 
       $_query = rtrim($_query, ','); 
       $_query .=')'; 

这是一次性编辑多个表项的高性能方式吗?有更快的方法吗?查询效率

谢谢

+1

可能有更快的方法,但我们无法从您显示的内容中知道。 '$ newUsers'从哪里来?也许有只有mySQL的方法来指定什么是新用户? – 2010-11-18 11:13:55

回答

1

是的,这是非常高效的。我不知道有什么更快的方法。

1

UPDATE很好。 通过使用implode而不是循环访问该数组,您可以使PHP更加优雅。

即:

$_query = 'UPDATE ' . TABLE_A1 . ' SET active=0 WHERE user_id IN (' . implode(',', $newUsers) . ');' 
1

您可以添加另一个contraint到查询,这可能会加速它的一点点多,但是这取决于你如何让你的用户...

如果你有一些用户认为已经“激活= 0”,你,你可以通过添加

....排除它们在查询其中活跃<> 0,USER_ID在(...

这会阻止已经具有正确值的字段的更新。我对系统oncce有类似的查询,它正在更新数百万条记录,其中包含正确的信息...