一、问题描述:
应收单列表加载速度较慢,存在卡顿,或者存在列表界面一直在转圈,数据加载不出来等卡慢的现象;
二、优化方案(此方案适用于8.1.0.20230921之前的版本,该版本之后已经对标准产品进行了优化):
1、请在应收单列表过滤界面点击“确定”前或者点击应收单列表“刷新”按钮前,先打开APM性能监控工具(打开方式:CTRL+SHIFT+ALT+M,四个按钮同时按下即可打开),启用APM后可对即将执行的功能进行监控;
2、如果列表能加载完数据,APM点停止,查看报告才有效,报告中出现如图中的慢语句,并且存在图中标识的三个关键信息(排序字段、应收单相关表、分页),请参照第4点进行优化;
3、如果列表不能加载完数据,存在一直转圈的现象,则取不到APM报告,可以通过两种方式来判断是否存在该慢SQL:
(1)、在应收单列表加载过程中,打开数据库,执行以下语句查询当前正在执行的SQL:
--查询正在执行的语句
select text,* from sys.dm_exec_requests er cross apply sys.dm_exec_sql_text(er.sql_handle)
(2)、开启APM并且查询列表数据之后:等应收单列表加载过一段时间(一般在卡住1~2小时以后),使用管理员账号登录,在菜单中找到“应用性能监控日志”,以此方式也可以找到对应的APM报告(前提是有开启过APM)。
4、待以上都确认完成,确实因为该语句引起的列表查询性能慢,则可以在数据库创建应收单明细表的索引来进行优化,创建语句如下:
CREATE INDEX IDX_AR_RECEIVABLEENTRY_FIDSEQ ON t_ar_Receivableentry(fid,fseq) ;
5、创建完索引,重新查询,即恢复正常。
三、说明:
1、通常应收单列表查询较慢,是因为该SQL语句的排序问题引起的,如果以上方式仍不能解决应收单列表查询慢,可以通过判断应收单行的数据量是否庞大来判断加载速度,理论上如果数据库中存在百万级,甚至千万级的数据量,并且过滤方案是全量查询,或者多组织查询,是会存在一定性能上的损耗的,如仍存在疑问,可联系官方进行处理;
2、应付单列表或者其他单据列表的如果出现加载慢,也可能存在同类型的性能问题,如果遇到可以参考此方案(仅参考,具体情况以实际为准)。
推荐阅读