今日优化XX反馈响应太慢的功能点:
1.成立采购小组选择用户
2.退回订单页面
3.申请开票选择订单界面
这三个页面反应特别慢,经过对这个三个功能的逐一分析,找到太慢的原因。
1.成立采购小组选择用户 功能响应太慢。看代码:
public ActionForward indexResult(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
initLocation(request);
request.setAttribute("users", userManager.findTeamUser());
return new ActionForward("/XXX.jsp");
}
这是查找选择用户的代码,这段代码没有做分页查询,也就是每次把满足条件的用户都查出来,如果满足条件的用户数多,那这个功能点必然会慢,
并且会越来越慢。
到正式站查了满足条件的数据,为18000多条,想想而知,把18000多条数据查询出来,保存到内容中风险有多大。
2.XXX订单页面 和 XX开票选择订单界面 功能点导致查询很慢的原因相同:查询试图写得太差,没有考虑大数据量的问题,导致查询太慢。
写得太差:就是执行一次查询可能对关联指标不可估计的多次查询。
像这种试图对写法:
create view my_view as
select
szzc_get_name.f_get_columnmeans('TN_NOTE','BILL_FLAG',(select max(nvl(x.bill_flag,0)) from tn_note x where x.order_id=t.id and x.status =1 )) bill_flag_mean,
(select count(1) from tn_note x where x.order_id=t.id) note_count
from tpo_headers_all t
where t.status=1;
查询 my_view 试图使,可能对tn_note 不可预计的多次查询。所以导致很慢,并且会越来越慢。