私の Web アプリは投票 (調査) を扱います。現在、データベース スキーマの一部として 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 は Choice の応答数、yes
3 は Choice の応答数no
、4 は Choice の応答数ですmaybe
。user_responses
フィールドとフィールドにも同じフォーマットが適用されanon_responses
ます。この方法について意見をいただければ幸いです。御時間ありがとうございます。
編集:MySQLを使用しています