oracle 有全局索引怎么删除分区
发布网友
发布时间:2022-04-22 08:11
我来回答
共1个回答
热心网友
时间:2022-04-09 18:08
ALTER
TABLE
DROP
PARTITION
用于删除table中某个PARTITION和其中的数据,主要是用于历史数据的删除。如果还想保留数据,就需要合并到另一个partition中。
删除该partition之后,如果再insert该partition范围内的值,要存放在更高的partition中。如果你删除了最大的partition,就会出错。
删除table
partition的同时,删除相应的local
index。即使该index是IU状态。
如果table上有global
index,且该partition不空,drop
partition会使所有的global
index
为IU状态。如果不想REBUIL
INDEX,可以用SQL语句手工删除数据,然后再DROP
PARTITION.
例子:
ALTR
ATBEL
sales
DROP
PARTITION
dec96;
到底是DROP
PARTITION或者是DELETE?
如果GLOBAL
INDEX是最重要的,就应该先DELETE
数据再DROP
PARTITION。
在下面情况下,手工删除数据的代价比DROP
PARTITION要小
-
如果要删除的数据只占整个TABLE的小部分
-
在TABLE中有很多的GLOBAL
INDEX。
在下面情况下,手工删除数据的代价比DROP
PARTITION要大
-
如果要删除的数据占整个TABLE的绝大部分
-
在TABLE中没有很多的GLOBAL
INDEX。
如果在TABLE是父TABLE,有被引用的约束,且PARTITION不空,DROP
PARTITION时出错。
如果要删除有数据的PARTITION,应该先删除引用约束。或者先DELETE,然后再DROP
PARTITION。
如果TABLE只有一个PARTITON,不能DROP
PARTITION,只能DROP
TABLE。