我有两个表:可以在“首选用户”MySQL查询中优化左连接吗?
poll_response(poll_id,option_id,USER_ID) (约50万行数据,500个独特的民意调查,1000个独特的选项,以及25000个独特的用户)
preferred_users (USER_ID) (约800行)
我想,以确定谁选择的每个选项是用户的百分比“首选用户”(即那些声誉很高的人)。其他用户可以回应投票;为了确定响应来自首选用户,加入对preferred_users表是必需的。
下面是我得到了什么:
SELECT option_id, count(*) AS all_votes, count(preferred_users.user_id) AS preferred_votes
FROM response
LEFT JOIN preferred_users ON response.user_id = preferred_users.user_id
GROUP BY option_id
查询吐出表是这样的:
| option_id | all_votes | preferred_votes
| 1 | 500 | 150
| 2 | 550 | 250
| 3 | 525 | 300
然后我可以做数学确定的百分比。
问题是查询经常超时 - 这意味着完成需要一分多钟。
有没有什么办法摆脱左连接或以其他方式优化查询?
你对这些表有什么索引? – 2012-02-27 20:00:50
BTREE索引每个列在poll_response – jawns317 2012-02-27 20:13:45