Помогите оптимизировать код.

Dima85

Новичок
В базе около 1500 человек. Мой код пробегает по всем людям, и записывает каждому в Message новый текст. Подскажите возможно можно-то как-то оптимизировать этот код. Т.к. он достаточно сильно грузит хостинг.
Наверное оптимизировать можно мульти выборкой, но я с ней совсем не знаком.

PHP:
$rows = mysql_query("SELECT `UserID`, `Message` FROM `users`");
while ($stroka = mysql_fetch_array($rows)){
$myid = $stroka['UserID'];
$oldmessage = $stroka['Message'];
$idlines = preg_split('/\n|\r\n?/', $oldmessage);
if (count($idlines) > 11) {
unset($idlines[0]);
}

$webmessage = implode("\n", $idlines).'\n<div class="alert alert-dismissable alert-danger">{d='.date("Y-m-d").'}<strong>'.$mname.'</strong></div>';
$registerquery = mysql_query("UPDATE `users` SET `Message`='$webmessage' WHERE `UserID`='$myid' LIMIT 1");
}
 
Последнее редактирование:

ksnk

прохожий
Не проще ли при выводе "message" для каждого пользователя, подставлять необходимую добавку. Тогда весь этот код будет оптимизирован абсолютным образом - выкинут...
 

Dima85

Новичок
А что не так с LIMIT 1 ? Зачем искать еще совпадения из 1500 записей если допустим нужная запись была в одной из первых?
 

Dima85

Новичок
для этого уникальные индексы есть
а ты описываешь перебор по порядку всех записей
UserID и есть индекс (AUTO_INCREMENT).
То есть в моем случае LIMIT1 не нужен, т.к. если указан индекс, в моем случае UserID. То перебора не будит?
Код:
mysql_query("UPDATE `users` SET `Message`='$webmessage' WHERE `UserID`='$myid'");
Или AUTO_INCREMENT и INDEX это совершенно разные вещи?
 
Последнее редактирование:

Hello

Новичок
Зачем тут PHP?
Код:
SET @date = DATE(NOW());
SET @mname = 'WTF?';

UPDATE `users` u1
SET u1.`Message`= CONCAT(REPLACE(u2.Message, '\r\n', '\n'). '\n<div class="alert alert-dismissable alert-danger">{d=', @date, '}<strong>', @mname, '</strong></div>')

JOIN `users` u2 ON u2.UserID = u1.UserID
 
Сверху