怎样理解键压缩索引?  eg:
 create index emp_name on emp(ename) tablespace users compress 1;  谢谢!

解决方案 »

  1.   

    压宿index对于复合索引比较有用,对于只有一个字段的简单索引,压宿意义不大
      

  2.   

    使用Oracle索引压缩技术,减少空间占用,并提高大数据量访问情况下的速度. 
    索引压缩仅用于复合索引,即多个字段建立一个索引的情况,通过compress参数指定压缩哪些字段.
    虽然压缩后的索引,相对来说需要花费更多的CPU时间来处理,
    但是,这样做后,可以在高速缓冲区中缓存更多的索引块,当大范围的扫描时,能够减少物理IO的数量.压缩索引特别那些需要节省存储空间的情况,以下那些单次查询的范围比较大的情况.
    不适合的情况,举例:
    1.保险支付项目_IX_项目编码 on 保险支付项目(项目编码,险类) 
    如果设置compress为1表示压缩第一个字段,第一个字段项目编码,相同的很少,可压缩的很少.
    估计是这个索引创建得不合理,应该把险类和项目编码的顺序互换一下,因为查询时,一般险类和项目编码会同时出现在Where子句中
    这样,相同险类的项目编码就很多,比较适合压缩, 
    但是应用程序中,大多数情况下,只需取一条记录,少有大范围的取数情况,并且本身不是无限增长的表,节省空间也很少,就没有必要压缩了.2.病人未结费用_IX_病人id on 病人未结费用(病人id,主页ID) 
    这个也没有压缩的必要,因为病人未结费用表中的病人ID相同的记录很少(因为记录的数据是按病人科室id,执行部门id,收入项目id等汇总的)
    相反,病人费用记录(病人id,主页ID) 
    这个就非常适合了,因为同一病人,特别是住院病人的记录比较多,而且结帐或费用查询时,一般是大范围的扫描取数,压缩后就可以减少物理IO的数量.