比如我有一张业务主表,字段比较多现在我有很多报表,我需要按照 某个时间(比如创建时间,分配时间,) 查询 这个时候我加索引但是这样的情况非常多,我又不能每个报表都加一个索引吧,经验值不是一个表最多5个索引么?各位有什么好招啊?

解决方案 »

  1.   

    看你的描述,如果报表能够直接查询的话看样子数据量不是很大,所以你可以试试下面的方法调用报表的时候
       --重建索引
       execute immediate 'create index ...';    报表处理逻辑   --删除原来的索引
       execute immediate 'drop index ...';
       
      

  2.   

    建索引呗。
    比如说:
    A报表,用到TIME1,TIME2,就把这两个字段做为一个索引;
    B报表,用到TIME3,TIME4,就把这两个字段做为一个索引;
    这都没有问题的。
      

  3.   

    但是 还有 C ,D,E F G呢
    都建? 还是建一个 包含 各种time的 联合索引,。
      

  4.   

    组合索引能够用到的规则是必须使用引导列。
    如:(a,b,c) 是组合索引的话,A列必须在where条件中使用才可以用到这个索引,只用b或者只用c或者只用b,c 都不可以。
    要根据你的实际情况考虑,还是建议你当查询报表的时候 新建索引,查询完毕删除索引。