Как эффективно хранить рекорды в базе данных?Хранение рекордов в базе данных эффективно
У меня есть таблица player_score с двумя столбцами player_id (первичный ключ), оценка (целочисленное значение).
Теперь я хочу позицию игрока в топ-лист и я создал следующий запрос
SELECT player_score.player_id,
(SELECT COUNT(*) FROM player_score ps WHERE ps.score >= player_score.score) AS position
FROM player_score
WHERE player_score.player_id = 19
Я думаю, что это очень нерационально у вас какие-либо другие идеи? Также возможно использовать elasticsearch или любую другую технологию для эффективного хранения этих данных.
Я думаю, что это нормально. Вместо COUNT (*) вы можете изменить значение COUNT (id). Добавить индекс в поле оценки –
Мой тест с 1 Mio записей имел время работы 240 мс на локальной машине. Я думаю, все в порядке. Я буду хранить значения в memcache, чтобы получить больше производительности. Спасибо за вашу помощь. – Pascal