2010-11-18 147 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有類似的查詢,它正在更新數百萬條記錄,其中包含正確的信息...