请问对于oracle的分区表,全局分区索引和全局不分区索引(应该就是普通索引)有什么区别?

请问对于oracle的分区表,全局分区索引和全局不分区索引(应该就是普通索引)有什么区别?
分别应该在什么情况下使用?谢谢!

简单的说吧,分区索引需要对每个分区建立相同的索引,也就是开始的工作量会稍微大点,不分区索引,也就是说一个索引对全表建立就行;这样问题就出来了,当你对某个分区进行drop或者新建分区的话,同时你得对不分区索引进行重建,这样工作量也会变大;而分区索引当你对表进行drop分区或create分区的时候只需要在新分区建立新的索引即可。

而且索引会随着表的增大而增大,所以不分区索引维护起来有点费劲,所以这个就看你自己建立的分区表是怎么样的了,是否比较容易维护索引追问

索引维护以及需要重建索引的问题主要是反映在 local index和global index的区别上吧?
我的意思是,如果现在我有一个按date进行range分区的表a,现在我想在date上建索引,那么下面这两种索引的建法会造成什么不同的影响,什么情况下该按第一种建:
1)create index ind_a_date on a(date) global;
2) create index ind_a_date on a(date) global partition by range(date)
(partition …………,
partition …………);

追答

第一种会随着表的增大而增大,越来越影响其效率,但是如果数据量在几十万的话,那就用任何一个都无所谓了。
后一个,如果你想把你2011年数据清空的话,那么针对每一个分区的索引也随着没了,而且不会影响其他分区的使用,所以,如果表数据量不是太大,建议用第一个,比较省事省时,如果分区较大,并且要定期维护的话,建议用第二个了

追问

第二种是这样吗?
我记得只有本地分区索引才能在truncate掉一个分区的情况下不影响其它分区的索引啊,
全局分区的话只要截断了就要update indexes或者rebuild索引吧?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答