Mer*_*cer 4 indexing rebuild stored-procedures oracle10g
我想创建一个过程来检索我的表上的所有索引并重建
我使用此查询检索所有索引:
select index_name from user_indexes where table_name='your_table_name'
Run Code Online (Sandbox Code Playgroud)
我用这个查询重建:
alter index <index_name> rebuild;
Run Code Online (Sandbox Code Playgroud)
谢谢.
create or replace procedure rebuild_indexes(
p_owner in varchar2,
p_table_name in varchar2
) as
begin
for indexes_to_rebuild in
(
select index_name
from all_indexes
where owner = p_owner
and table_name = p_table_name
) loop
execute immediate 'alter index '||p_owner||'.'
||indexes_to_rebuild.index_name||' rebuild';
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)
虽然这只适用于最简单的索引.重建有很多限制.例如,如果索引已分区,则需要重建每个分区或子分区.
您可能需要考虑许多选项.例如,ONLINE如果您希望其他人在重建期间使用索引,请使用添加PARALLEL选项以更快地重建(但这也会更改索引的并行设置,这可能会导致问题)等.
请记住,许多甲骨文高级专家认为重建索引通常是浪费时间.
| 归档时间: |
|
| 查看次数: |
5762 次 |
| 最近记录: |