总账余额表索引调整:设置唯一

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

总账余额表索引调整:设置唯一

  自EAS820开始,为了优化性能,对余额表进行了拆表,目前总账后台余额表设计有三种类型余额:【科目余额】,【辅助余额】和【多计量单位辅助余额】,每种类型余额又按【是否包含未过账凭证】和【币别】拆分为6个表:

科目余额表:

T_GL_AccountBalance_1F(包含未过账原币数据)

T_GL_AccountBalance_5F(过账原币数据) 

T_GL_AccountBalance_1L(包含未过账本位币数据) 

T_GL_AccountBalance_5L(过账本位币数据) 

T_GL_AccountBalance_1R(包含未过账报告币数据) 

T_GL_AccountBalance_5R(过账报告币数据)

辅助余额表:

T_GL_AssistBalance_1F(包含未过账原币数据) 

T_GL_AssistBalance_5F(过账原币数据) 

T_GL_AssistBalance_1L(包含未过账本位币数据) 

T_GL_AssistBalance_5L(过账本位币数据) 

T_GL_AssistBalance_1R(包含未过账报告币数据) 

T_GL_AssistBalance_5R(过账报告币数据)

多计量单位辅助余额表:

T_GL_AssistMeasureBalance_1F(包含未过账原币数据) 

T_GL_AssistMeasureBalance_5F(过账原币数据) 

T_GL_AssistMeasureBalance_1L(包含未过账本位币数据) 

T_GL_AssistMeasureBalance_5L(过账本位币数据) 

T_GL_AssistMeasureBalance_1R(包含未过账报告币数据) 

T_GL_AssistMeasureBalance_5R(过账报告币数据)


  余额表中的记录,它是多个维度的组合,每个组合只能有一条记录,比如T_GL_AccountBalance_1F,它的维度是【组织,期间,科目,币别】,使用这些列应该是可以创建主键或唯一索引的,但是由于设计初期,考虑不周,只建了常规索引,以至于因某些未知原因,产生重复记录,进而造成余额结转、期未处理,账表查询等功能出错。下面以表T_GL_AccountBalance_1F在Oracle库为例说明如何将常规索引调整为唯一索引。

  1、对于已存在数据的表,要先检查是否存在重复数据,如果存在重复数据,是无法建立唯一索引的,要先清理重复数据。执行下面的查询脚本,如果存在数据,说明存在重复记录:

select FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID, count(*) from T_GL_ACCOUNTBALANCE_1F 
group by FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID having count(1) > 1;

  2、执行下面的脚本清理重复数据:

delete from T_GL_AccountBalance_1F 
where (FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID) in ( 
    select FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID from T_GL_AccountBalance_1F 
    group by FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID having count(*) > 1 
) 
and rowid not in ( 
    select min(rowid) from T_GL_AccountBalance_1F 
    group by FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID having count(*) > 1 
);

  3、执行下面的脚本删除旧索引:

drop index IX_GL_AC_1F_AC1;

  4、执行下面的脚本创建新的唯一索引

create unique index IX_GL_AC_1F_AC1 on T_GL_ACCOUNTBALANCE_1F(FORGUNITID, FPERIOD, FACCOUNTID, FCURRENCYID);


注意:

  1、脚本请从附件中提取,Oracle库使用fi_gl_balance_index_adjust_oracle.sql,MSSQLServer库使用fi_gl_balance_index_adjust _mssqlserver.sql

  2、对于Oracle库请在PL/SQL中执行,对于MSSQLServer请在MSSQLServer的查询分析器中执行。

  3、请先在测试环境验证,批量无法执行的 话,请逐条执行。

  4、本操作比较耗性能,请在晚上业务比较空闲时进行。

fi_gl_balance_index_adjust.zip

总账余额表索引调整:设置唯一

  自EAS820开始,为了优化性能,对余额表进行了拆表,目前总账后台余额表设计有三种类型余额:【科目余额】,【辅助余额】和【多计量单位...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息