当前位置 : 主页 > 网络推广 > seo >

stored-procedures – 创建一个过程,检索我的表上的所有索引并重建

来源:互联网 收集:自由互联 发布时间:2021-06-16
我想创建一个过程来检索我的表上的所有索引并重建 我使用此查询检索所有索引: 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;

谢谢.

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;
/

虽然这只适用于最简单的索引.重建有很多restrictions.例如,如果索引已分区,则需要重建每个分区或子分区.

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

请记住,许多甲骨文高级专家认为重建索引通常是浪费时间.

网友评论