根据个人实践经验,分享如下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秒的收益,这样的成本与收益是有利的。