oracle分区索引

前两天做一个大的分区表的数据清理,split 分区后,忘记rebuild 索引,导致生产库查询的分区表非常的缓慢


对分区表某个分区做split ,如果没有在alter table 语句最后加上update indexes,被分裂出的两个分区的本地索引和整个表的全局索引都会失效。

当根据索引字段查询分区表数据时,如果某个分区的本地索引失效,那么没有索引失效的分区走本地索引查询,索引失效的分区走全分区扫描,恰巧这个分区很大,直接拖累了整个查询速度,当然如果知道自己要查询的数据在具体哪个分区,指定分区查询走本地索引,即便其他分区索引失效也不会影响到查询分区。


在对分区表做 drop,truncate,split,merge,exchange 都会造成本地索引或全局索引的失效,操作完了,记得要重建索引

当然在生产库上 得加上update indexes 可以维护本地索引和全局索引,update global indexes 只维护全局索引。其中exchange 比较特别,即便加上update indexes 索引仍旧失效,千万别忘了重建索引。


截断分区

ALTER TABLE tablename  TRUNCATE PARTITION  pname  [DROP STORAGE | REUSE STORAGE] UPDATE  INDEXES;

删除分区

ALTER TABLE tablename  DROP PARTITION  pname  UPDATE GLOBAL INDEXES;

分裂分区

ALTER TABLE tablename SPLIT PARTITION  pname1 AT (split point) INTO (PARTITION pname2, PARTITION pname3);


重建全局索引

ALTER INDEX tablename REBUILD [ ONLINE ] [ PARALLEL value ]  [ NOLOGGING ] ;

重建分区索引

ALTER INDEX tablename REBUILD PARTITION pname  [ ONLINE ] [ PARALLEL value ]  [ NOLOGGING ] ;


线上重建索引大表一定要online ,以免DML阻塞

 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值