电信运营商Db2db2建表

临时表的创建和维护?

在做复杂业务分析时,一个存储过程也会用到很多临时表(存储业务分析某一步的中间结果),这些表的数据经常变化(每个周期都会被清空再装入),还需要和别的表做关联,那么这种表在建表的时候有什么要注意的吗?为了提升程序性能,优化时考虑这些表吗?要建立索引吗?runstats应该保持在什么状态...显示全部

在做复杂业务分析时,一个存储过程也会用到很多临时表(存储业务分析某一步的中间结果),这些表的数据经常变化(每个周期都会被清空再装入),还需要和别的表做关联,那么这种表在建表的时候有什么要注意的吗?为了提升程序性能,优化时考虑这些表吗?要建立索引吗?runstats应该保持在什么状态?需要reorg吗?

收起
参与14

查看其它 1 个回答topzgm的回答

topzgmtopzgm课题专家组软件架构设计师People's Bank of China

根据个人实践经验,分享如下2点:
1)如果是DGTT(DECLARE GLOBAL TEMPORARY TABLE)/CGTT(CREATE GLOBAL TEMPORARY TABLE),则一般不必对其建立index,也不需对其进行runstats、reorg,因为DB2查询优化器在每次分析和执行SQL时,都会对包含DGTT/CGTT的SQL进行重新优化并且生成新的最优access plan。
2)如果不是DGTT/CGTT,而是自己create table x1的普通表,即使这些普通表经常变化,只要建立index、runstats、reorg带来的收益远远大于建立index、runstats、reorg耗费的成本,就应该建立index、runstats、reorg,否则不必。复杂业务分析的存储过程,更加需要遵从这个“收益与成本原则”。例如,一个复杂分析,不建立index/runstats/reorg时查询需要5分钟时间;但是如果建立index/runstats/reorg需要耗时3秒种时间,而此时查询提高到只需10秒时间;这样的3秒种的成本,带来了查询时间减少4分50秒的收益,这样的成本与收益是有利的。

银行 · 2017-08-18
浏览1684

回答者

topzgm
软件架构设计师People's Bank of China
擅长领域: 数据库服务器存储

topzgm 最近回答过的问题

回答状态

  • 发布时间:2017-08-18
  • 关注会员:3 人
  • 回答浏览:1684
  • X社区推广