Выполнение запроса несколько раз против использования куки - PullRequest
1 голос
/ 25 июля 2010

Вопрос о производительности запроса / базы данных:

У меня есть таблица, в которой записывается, сколько «очков» заработал пользователь. Есть 1 ряд на каждый 1 балл. Когда кто-то набирает 20 очков, 20 строк вставляются в базу данных. Когда кто-то потеряет 20 очков, я добавлю строку со значением «-1» в базу данных. Таким образом, количество баллов, которое кто-то имеет, можно рассчитать, выполнив простой запрос SELECT, который суммирует баллы вместе.

Потенциально каждый отдельный пользователь может иметь тысячи строк для указания набранных / потерянных баллов, а моя база данных может иметь тысячи пользователей.

Мне нужно показать баллы (для одного пользователя, вошедшего в систему) на «каждой» странице сайта.

Вопрос в том, повредит ли производительность базы данных выполнению этого запроса SELECT при каждой загрузке страницы, или более эффективно выполнить запрос один раз, сохранить значение в Cookie и просто отобразить Cookie на странице? Единственный риск, который я предвижу, заключается в том, что, если браузер пользователя не поддерживает Cookies, и что Cookie всегда обновляется для отображения правильного значения.

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Это довольно дешевая операция. Если у вас есть много тысяч пользователей кластеризованного индекса (идентификатор пользователя, точка), вы можете ускорить поиск.

Хотя это довольно дешевая операция, для выполнения дополнительного запроса все еще требуется некоторое время. Если вы ожидаете очень большие объемы трафика, альтернативой может быть сохранение текущей точки в таблице пользователей в столбце рядом с именем пользователя и т. Д. Я полагаю, что вы выбираете имя пользователя для каждой страницы, тогда вы можете получить текущую точку почти для бесплатно.

Таблица баллов может храниться для справки и получения подробной информации о том, почему и когда были начислены баллы.

0 голосов
/ 25 июля 2010

Один запрос на загрузку страницы мало что даст, но да, cookie более эффективен, хотя и не безопасен. Вы должны использовать сеансы, чтобы пользователь не мог изменять данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...