Мое веб-приложение занимается опросами (опросами). Сейчас у меня есть 2 таблицы как часть схемы базы данных.
polls
id
question
choices (ex: yes,no,maybe)
created
polls_responses
poll_id
user_id
tracker_id
response
Проблема в том, что на некоторых опросах у меня много ответов (> 1000). Люди могут просматривать результаты опросов, и они покажут, сколько пользователей проголосовало за «да», «нет» или, может быть, и сколько анонимных пользователей проголосовало «за», «да» или «возможно». Проблема заключается в том, что всякий раз, когда пользователь просматривает результаты опроса, он должен циклически просматривать все ответы и подсчитывать общее количество ответов, # ответов для каждого выбора, # ответов для каждого выбора, сделанного пользователями, и Количество ответов для каждого выбора, сделанного tracker_id (анонимными пользователями) и рассчитать проценты и отобразить его в виде гистограммы. Это делает загрузку страницы очень медленной. Я думал о денормализации базы данных для повышения производительности, чтобы у нас было что-то вроде этого
polls
id
question
choices (ex: yes,no,maybe)
total_responses (ex: 10,3,3,4)
user_responses (ex: 5,2,2,1)
anon_responses (ex: 5,1,3,1)
created
polls_responses
poll_id
user_id
tracker_id
response
То есть, для значения в total_responses
, 10 - это сумма, 3 - это количество ответов для выбора yes
, 3 - это количество ответов для выбора no
, а 4 - это число ответы на выбор maybe
. Тот же формат применяется к полям user_responses
и anon_responses
. Если бы я мог получить некоторые мнения по этому методу, я был бы очень признателен! Спасибо за ваше время.
РЕДАКТИРОВАТЬ: я использую MySQL