Объяснение:
- У меня есть script, который показывает общие кредиты (репутацию) для каждого пользователя и имеет таблицу истории в базе данных для заработанных кредитов всех uesrs
Вот пример моей таблицы базы данных истории:
+----------------------------------------------+
| DATE ID USERNAME CREDITS |
+----------------------------------------------+
| ... 1 X 12 |
| ... 2 E 2 |
| ... 3 X 1 |
| ... 4 X -7 |
| ... 5 O 4 |
+----------------------------------------------+
- My script использует SELECT SUM FROM table WHERE username = 'X' и эхо-сигнал, поэтому в этом случае для пользователя X (12 + 1 - 7) он отображает 6
Вопросы:
-
Я хотел знать, что это не так (SELECT SUM всей истории), чтобы показать пользователям INSTEAD другую таблицу для общей листы пользователей) будут создавать проблемы, если таблица истории настолько огромна? (скажем, 100 000 000 записей через несколько лет)
-
Это то, что делают большинство профессиональных программистов? (если нет, что есть)
-
Как насчет раздела истории, если пользователи хотят просмотреть историю кредитов, мы должны ОГРАНИЧИТЬ его с помощью LIMIT 100 записей, когда * SELECT * ing или no (для производительности)
-
Должен ли он запускаться на каждом обновлении страницы или на каждой странице меняться? (если 1000 пользователей подключены к сети и этот запрос SELECT применяется при каждом обновлении, это не замедляет работу сервера)
РЕДАКТИРОВАТЬ После ответа:
Но если нам нужно сохранить итоговые значения в другой таблице и автоматически обновить их, возникнут две проблемы:
-
Если мы сделаем это именно тогда, когда пользователь получил несколько кредитов, не возможно, что пользователь получил два разных кредита в одно и то же время (это возможно), и поскольку мы не можем поставить Auto Increment в Totals (поскольку каждый пользователь имеет только 1 запись), мы можем пропустить 1 кредит, Или, если есть решение этой проблемы, я не знаю об этом
-
Если мы установим Cron-Job, чтобы делать это часто, то пользовательские кредиты не обновляются до тех пор, пока задание cron не обновит таблицу итогов