Нашел ужасный код в двиге JohnCMS5

1.27K
.
Krite
$array = array();
while ($res = mysql_fetch_array($req)) {
$array[] = $res['id'];
}
mysql_query("UPDATE `cms_forum_rdm` SET
`time` = '" . time() . "'
WHERE `topic_id` IN('" . implode(',',$array) . "') AND `user_id` = '$user_id'");
также можно c ArrayObject поиграться
.
И не было бы трехэтажных JOIN'ов. Их тоже не желательно использовать при возможности.
.
# Krite (01.10.2013 / 17:22)
$array = array();
while ($res = mysql_fetch_array($req)) {
$array[] = $res['id'];
}
mysql_query("UPDATE `cms_forum_rdm` SET
`time` = '" . time() . "'
ВО! Разумное решение. Как же я забыл о IN.
.
Можно же сократить запросы.
А вот как быть с инсертом? Для каждого пользователя записывать - не вариант.
.
(\/)____o_O____(\/)
NURD, можно еще вместо цикла подсунуть массив идов тем в ин
WHERE `topic_id` = in(...) AND `user_id` = '$user_id'");
.
# NURD (01.10.2013 / 17:25)
Можно же сократить запросы.
А вот как быть с инсертом? Для каждого пользователя записывать - не вариант.
пакетами по несколько инсерт в запросе
.
# Krite (01.10.2013 / 17:22)
$array = array();
while ($res = mysql_fetch_array($req)) {
$array[] = $res['id'];
}
mysql_query("UPDATE `cms_forum_rdm` SET
`time` = '" . time() . "'
Все равно останется еще половина. И если будет под тысячу апдейтов, то это IN('" . implode(',',$array) . "') разрастется до безумных размеров. Я как-то раньше побоялся это использовать.
.
(\/)____o_O____(\/)
Krite, во во, пока с тела писал, уже опередил гг
.
(\/)____o_O____(\/)
NURD, insert delayed
.
(\/)____o_O____(\/)
web_demon, массив соберет быстро, по ключу, один запрос по очереди пройдет быстрее чем толпа со смешанной очередью
Всего: 105