您现在的位置是:首页 >

分区表索引 分区表、分区索引和全局索引部分总结

火烧 2022-04-03 18:44:40 1039
分区表、分区索引和全局索引部分总结   分区表 分区索引和全局索引   在一个表的数据超过过 万条或占用 G空间时 建议建立分区表    create ta le ta c i t c varchar

分区表、分区索引和全局索引部分总结  

分区表索引 分区表、分区索引和全局索引部分总结

  分区表 分区索引和全局索引

  在一个表的数据超过过 万条或占用 G空间时 建议建立分区表

         create table ta(c  int c  varchar ( ) c  varchar ( ) c  int constraint pk_ta primary key (c )) partition by range(c )(partition p  values less than ( ) partition p  values less than ( ) partition p  values less than ( ) partition p  values less than (maxvalue));

  分区索引和全局索引

  分区索引就是在所有每个区上单独创建索引 它能自动维护 在drop或truncate某个分区时不影响该索引的其他分区索引的使用 也就是索引不会失效 维护起来比较方便 但是在查询性能稍微有点影响

         create index idx_ta_c  on ta(c ) local (partition p partition p partition p partition p ); 或者 create index idx_ta_c  on ta(c ) local ;

  另外在create unique index idx_ta_c on ta(c ) local ;系统会报ORA 错误 这是因为ta表的分区列是c oracle不支持在分区表上创建PK主键时主键列不包含分区列 创建另外的约束(unique)也不可以

  全局索引就是在全表上创建索引 它可以创建自己的分区 可以和分区表的分区不一样 也就是它是独立的索引 在drop或truncate某个分区时需要创建索引alter index idx_xx rebuild 也可以alter table table_name drop partition partition_name update global indexes;实现 但是要花很长时间在重建索引上 可以通过查询user_indexes user_part_indexes和user_ind_partitions视图来查看索引是否有效

         create index idx_ta_c  on ta(c );

  或者把全局索引分成多个区(注意和分区表的分区不一样)

         create index idx_ta_c  on ta(c ) global partition by range(c )(partition ip  values less than( ) partition ip  values less than( ) partition ip  values less than(maxvalue));

  注意索引上的引导列要和range后列一致 否则会有ORA 错误

  oracle会对主键自动创建全局索引

  如果想在主键的列上创建分区索引 除非主键包括分区键 还有就是主键建在两个或以上列上

lishixinzhi/Article/program/Oracle/201311/16543  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码