【发布时间】:2019-12-21 10:17:41
【问题描述】:
我有一个问题响应表,当我尝试通过查询来计算问题的响应数以创建图表时,加载需要 65 秒
所以请指导我如何优化这个查询
SELECT
vr.question_id,
(SELECT COUNT(response) FROM visitors_response WHERE question_id = vr.question_id AND response = 5 ) AS one_star,
(SELECT COUNT(response) FROM visitors_response WHERE question_id = vr.question_id AND response = 4 ) AS two_star,
(SELECT COUNT(response) FROM visitors_response WHERE question_id = vr.question_id AND response = 3 ) AS three_star,
(SELECT COUNT(response) FROM visitors_response WHERE question_id = vr.question_id AND response = 2 ) AS four_star,
(SELECT COUNT(response) FROM visitors_response WHERE question_id = vr.question_id AND response = 1 ) AS five_star,
(SELECT AVG(response) FROM visitors_response WHERE question_id = vr.question_id ) AS average
FROM visitors_response vr
JOIN questions q ON q.id = vr.question_id
JOIN survey s ON s.id = q.survey_id
WHERE s.user_id = 101 AND s.status = 'active'
GROUP BY vr.question_id
【问题讨论】:
标签: mysql query-optimization sql-optimization