运用临时表方案优化薪酬核算函数中的数据查询性能

栏目:s-hr cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-17浏览:1

运用临时表方案优化薪酬核算函数中的数据查询性能

    薪酬核算中,经常要关联查询考勤结果表T_HR_ATS_AttendanceResult,随着客户系统的长期使用,此表的数据量十分庞大,以某个使用了4年的客户为例,考勤结果表的数据量已经达到5千万级,导致某些需要关联查询考勤结果的核算函数执行起来耗时非常久,严重拉低了整体薪酬核算的性能。

    针对此情况优化的方案是,创建临时表,先把满足当前期间薪酬核算的考勤数据取出来,放在临时表中并创建索引,后续取数都从临时表中取。

    String tempAttResultTab = TempTablePool.getInstance(ctx).createTempTableName();
    String insertAttResultTab = " SELECT t.* into "+tempAttResultTab 
	+" from T_HR_ATS_AttendanceResult t where t.FATTENCEDATE between {ts'"+beginDateStr+"'} and {ts'"+endDateStr+"'} "
        +" and t.FPROPOSERID in (select a.FPERSONID from t_hr_scmpcaltable a inner join "+tempCalTableName+" "
        +" b on b.FID = a.FID  where a.fcalSchemeid='"+calschemeid+"' )";
    DbUtil.execute(ctx, insertAttResultTab);

    //临时表创建索引
    String attResultTabIndex = "IX_HR_ATTRST"+String.valueOf(endTime2);
    String createIndexSql2 = "create index "+attResultTabIndex+" on "+tempAttResultTab+"(FPROPOSERID,FATTENCEDATE) ";
		   
    DbUtil.execute(ctx, createIndexSql2);


运用临时表方案优化薪酬核算函数中的数据查询性能

薪酬核算中,经常要关联查询考勤结果表T_HR_ATS_AttendanceResult,随着客户系统的长期使用,此表的数据量十分庞大,以某个使用了4年的...
点击下载文档
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息