我的网络应用程序处理民意调查(调查)。现在我有 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