[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL запрос с большой таблицы
Сириус
Добрый вечер, прошу помочь, у меня есть таблица, на 50к записей.

username, balance.

Нужно создать скрипт который отнимает 0.2% денег у каждого юзера раз в сутки.

Вот мой вариант работы:


<?php

$moneySelect = mysql_query("SELECT * FROM `users_balance`") or
die(mysql_error());

while($string = mysql_fetch_array($moneySelect)) {

$balance = $string['balance'];
$username = $string['username'];

$balance = $balance - 0.2%;

mysql_query("UPDATE `users_balance` SET `balance` = '$balance' WHERE `username` = '$username' ") or
die("Could not connect: " . mysql_error());

}


?>


Но я вот боюсь что слишком "толстый" цикл, какие нибудь хинты? У нас свой dedicated сервер, потому ни кто не отключит нас за большие нагрузки, но все же.



Спустя 3 минуты, 19 секунд (9.12.2011 - 21:02) Winston написал(а):
Не уверен насчет отнятия процентов, но целые числа отнять можно таким вот запросом, без предварительного вытаскивания из БД. Попробуй
mysql_query("UPDATE `users_balance` SET `balance` = `balance` - 0.2% WHERE `username` = '" . $username . "' ") or die(mysql_error());




Спустя 4 минуты, 27 секунд Winston написал(а):
А еще попробуй таким запросом. Этот должен заработать
mysql_query("UPDATE `users_balance` SET `balance` = `balance` - (0.2 / 100 * `balance`) WHERE `username` = '" . $username . "' ") or die(mysql_error());

Спустя 5 минут, 6 секунд (9.12.2011 - 21:07) Сириус написал(а):
Ох, благодарю.Я так и думал, что есть способ более привлекательный, а что насчет "нагрузки"?

Спустя 1 минута, 19 секунд (9.12.2011 - 21:08) Winston написал(а):
Насчет нагрузки даже не знаю. Но будет точно намного меньше чем в твоем примере smile.gif

Спустя 3 минуты, 7 секунд (9.12.2011 - 21:12) inpost написал(а):
Сириус
50 тыс - мало записей. Достаточно быстро пробежится. Ставь крон на ночь какую-нибудь.

Спустя 23 часа, 10 минут, 37 секунд (10.12.2011 - 20:22) Guest написал(а):
Цитата
отнимает 0.2% денег у каждого юзера

А зачем тогда проверка по $username ?
Просто
mysql_query("UPDATE `users_balance` SET `balance` = `balance` - (0.2 / 100 * `balance`) ")
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.