SELECT u.name,count( f.id ) AS count_factory
FROM tbl_user AS u
LEFT JOIN tbl_factory AS f ON f.user_id = u.id
WHERE u.type =30
GROUP BY u.name
ORDER BY count_factory DESC数据量小的时候运行没有问题 但是达到几万条就性能很差 需要很长时间才可以运行结束
问下有什么解决方法和建议吗? 多谢各位
FROM tbl_user AS u
LEFT JOIN tbl_factory AS f ON f.user_id = u.id
WHERE u.type =30
GROUP BY u.name
ORDER BY count_factory DESC数据量小的时候运行没有问题 但是达到几万条就性能很差 需要很长时间才可以运行结束
问下有什么解决方法和建议吗? 多谢各位
tbl_factory表上创建user_id的索引。其它则没什么可优化的了。毕竟,你的这个查询只能是全表扫描,统计完成后才能根据,count( f.id )的结果进行排序。速度不会太快。如果经常有这方面的需求,则应该考虑创建一个统计表。具体思路你可以GOOGLE一下数据仓库先了解一下。
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖