From 067681458885d3bd356667cbaf6378245748866b Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Thu, 5 Dec 2002 19:13:46 +0000 Subject: [PATCH] Reduce the PM counter update query count git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@3178 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/update_to_204.php | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/phpBB/update_to_204.php b/phpBB/update_to_204.php index fe8becc451..ddfd1447e2 100644 --- a/phpBB/update_to_204.php +++ b/phpBB/update_to_204.php @@ -774,14 +774,23 @@ switch ( $row['config_value'] ) if ($row = $db->sql_fetchrow($result)) { + $update_users = array(); do { - $sql = "UPDATE " . USERS_TABLE . " - SET user_unread_privmsg = " . $row['unread_count'] . " - WHERE user_id = " . $row['privmsgs_to_userid']; - _sql($sql, $errored, $error_ary); + $update_users[$row['unread_count']][] = $row['privmsgs_to_userid']; } while ($row = $db->sql_fetchrow($result)); + + while (list($num, $user_ary) = each($update_users)) + { + $user_ids = implode(', ', $user_ary); + + $sql = "UPDATE " . USERS_TABLE . " + SET user_unread_privmsg = $num + WHERE user_id IN ($user_ids)"; + _sql($sql, $errored, $error_ary); + } + unset($update_list); } $db->sql_freeresult($result); @@ -793,16 +802,24 @@ switch ( $row['config_value'] ) if ($row = $db->sql_fetchrow($result)) { + $update_users = array(); do { - $sql = "UPDATE " . USERS_TABLE . " - SET user_new_privmsg = " . $row['new_count'] . " - WHERE user_id = " . $row['privmsgs_to_userid']; - _sql($sql, $errored, $error_ary); + $update_users[$row['new_count']][] = $row['privmsgs_to_userid']; } while ($row = $db->sql_fetchrow($result)); + + while (list($num, $user_ary) = each($update_users)) + { + $user_ids = implode(', ', $user_ary); + + $sql = "UPDATE " . USERS_TABLE . " + SET user_new_privmsg = $num + WHERE user_id IN ($user_ids)"; + _sql($sql, $errored, $error_ary); + } + unset($update_list); } - $db->sql_freeresult($result); // Optimize/vacuum analyze the tables where appropriate switch (SQL_LAYER)