Stored procedures 创建一个过程,检索表上的所有索引并重新生成

Stored procedures 创建一个过程,检索表上的所有索引并重新生成,stored-procedures,oracle10g,indexing,rebuild,Stored Procedures,Oracle10g,Indexing,Rebuild,我想创建一个过程来检索表上的所有索引并重新生成 我使用此查询检索所有索引: select index_name from user_indexes where table_name='your_table_name' alter index <index_name> rebuild; 我用这个查询重建了: select index_name from user_indexes where table_name='your_table_name' alter index <

我想创建一个过程来检索表上的所有索引并重新生成

我使用此查询检索所有索引:

select index_name from user_indexes where table_name='your_table_name'
alter index <index_name> rebuild;
我用这个查询重建了:

select index_name from user_indexes where table_name='your_table_name'
alter index <index_name> rebuild;
alterindex重建;
Thx

尽管这只适用于最简单的索引。有许多人正在重建中。例如,如果索引已分区,则需要重建每个分区或子分区

有很多选择,你可能需要考虑。例如,使用
ONLINE
如果希望其他人在重建期间使用索引,请添加
PARALLEL
选项以更快地重建(但这也会更改索引的并行设置,这可能会导致问题),等等

请记住,许多顶级Oracle专家认为重建索引通常是浪费时间。在一些罕见的情况下,重建可以帮助索引,例如单调递增值的稀疏删除。但大多数索引重建都是因为可以通过阅读Richard Foote的介绍来消除神话

重建将使索引最初运行得更快,看起来更小,但这是因为缓存和减少了诸如段空间分配之类的开销。一周后,你的索引可能会回到开始的位置