Во-первых, это хорошо, что вам нравится этот вызов!
Во-вторых, я бы посоветовал не оптимизировать приложение, пока вы не докажете, что вам это нужно, особенно.в дизайне базы данных.Это хороший баланс, но, в общем, я бы сначала выбрал «чистый» реляционный дизайн и вводил дублированные данные только тогда, когда это действительно необходимо.
Итак, я бы начал с записи каждогоголосовать и подсчитывать общий балл на лету.Таким образом, вам не нужно иметь дело с тем, что происходит, когда ваш «подсчитанный балл» не синхронизируется с голосами (например, из-за сбоя приложения между записью голоса и обновлением итога).
Как только у вас появится этот дизайн, найдите способ протестировать производительность с огромными объемами данных и большими объемами посетителей.DBMonster и Apache JMeter могут быть инструментами для использования здесь.
Когда вы сталкиваетесь с проблемами производительности, попробуйте сначала решить их с помощью оптимизации запросов и индексации - используйте Stack Exchange в полной мере!Также обратите внимание на кеширование на уровне приложения.
Когда вы действительно, действительно не можете выжать из приложения больше производительности, я бы начал предварительно рассчитывать оценки, как предлагает Стефани.