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数据量小的时候运行没有问题   但是达到几万条就性能很差    需要很长时间才可以运行结束
问下有什么解决方法和建议吗? 多谢各位

解决方案 »

  1.   

    先试试type上建索引,f.user_id 和u.id建索引
      

  2.   

    tbl_user表上创建type的索引
    tbl_factory表上创建user_id的索引。其它则没什么可优化的了。毕竟,你的这个查询只能是全表扫描,统计完成后才能根据,count( f.id )的结果进行排序。速度不会太快。如果经常有这方面的需求,则应该考虑创建一个统计表。具体思路你可以GOOGLE一下数据仓库先了解一下。
      

  3.   

    当您的问题得到解答后请及时结贴.
    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#结帖