我的系统如下
现在,我开发了关于监控销售的网站。经理将为每个产品提供销售目标。然后销售人员可以输入销售的实现,经理将批准。 Web将计算成就并显示获得最佳成就的销售人员。案例预览如图。 如果销售大约10或20人没有问题..但如果销售超过100销售像我的情况在网络销售人员约130人和700批准销售,结果是我的网络很慢,以计算最好的销售和现在销售产品仍在增加。 我用php和CI。 请给我建议解决这个问题的最佳方法
答案 0 :(得分:0)
您可以在1个查询中创建效果视图:
SELECT sales, (avg( percent_sold )*100) avg_percent_sold
FROM (
SELECT sales, product, SUM(selling) sum_sold, target, SUM(selling)/target as percent_sold
FROM (
SELECT tt.sales, tt.product, tt.target, IFNULL(ts.selling,0) as selling
FROM tbl_target tt
LEFT JOIN tbl_selling ts ON ( ts.sales=tt.sales AND ts.product=tt.product )
ORDER BY NULL
) tbl_sales
GROUP BY sales, product
ORDER BY NULL
) tbl_performance
GROUP BY sales
ORDER BY avg_percent_sold desc
可以通过在tbl_target和tbl_selling的所有列上添加索引来优化性能。确保使用EXPLAIN
query命令检查索引不是最佳的位置。