set heading off
set feedback off
set linesize 200
column c_sql format a200
spool c:\c_index.sql
select 'drop index ' || index_name || ';'
from user_indexes
where table_owner = 'RTMART'
and index_type = 'NORMAL'
and (table_name like 'LOAD%' or table_name like 'TAC%' or
table_name like 'TAG%' or table_name like 'TBU%' or
table_name like 'TCO%' or table_name like 'TCS%' or
table_name like 'TCQ%' or table_name like 'TPL%' or
table_name like 'T_SM%');
select 'create index ' || iname || ' on ' || tname || '(' || cname || ');' c_sql
from (select index_name iname,
table_name tname,
case max(rnumber)
when 1 then
max(decode(rnumber, 1, column_name, ''))
when 2 then
max(decode(rnumber, 1, column_name, '')) || ',' ||
max(decode(rnumber, 2, column_name, ''))
when 3 then
max(decode(rnumber, 1, column_name, '')) || ',' ||
max(decode(rnumber, 2, column_name, '')) || ',' ||
max(decode(rnumber, 3, column_name, ''))
else
max(decode(rnumber, 1, column_name, '')) || ',' ||
max(decode(rnumber, 2, column_name, '')) || ',' ||
max(decode(rnumber, 3, column_name, '')) || ',' ||
max(decode(rnumber, 4, column_name, ''))
end as cname
from (select index_name,
table_name,
column_name,
row_number() over(partition by index_name order by table_name, column_name) rnumber
from (select t.index_name, t.table_name, t.column_name
from user_ind_columns t, user_indexes b
where t.index_name = b.index_name
and t.table_name = b.table_name
and b.index_type = 'NORMAL'
and b.table_owner = 'RTMART'
and (t.table_name like 'LOAD%' or
t.table_name like 'TAC%' or
t.table_name like 'TAG%' or
t.table_name like 'TBU%' or
t.table_name like 'TCO%' or
t.table_name like 'TCS%' or
t.table_name like 'TCQ%' or
t.table_name like 'TPL%' or
t.table_name like 'T_SM%')
order by table_name, index_name, column_name))
group by index_name, table_name);
spool off
set heading on
set feedback on
分享到:
相关推荐
在重建过程中,用户仍然可以使用原有的索引,并且新索引的构建也会利用原有索引的信息,这使得索引重建的过程更加迅速。 2. **索引信息的收集与验证**:为了判断索引是否需要重建,可以收集并分析索引的状态信息。...
本文主要总结了重建Oracle索引的相关知识点。 一、重建索引的前提条件 当表上的数据频繁进行`UPDATE`和`DELETE`操作,或者执行了`ALTER TABLE ... MOVE`操作导致ROWID改变时,可能需要考虑重建索引。这些操作可能...
导致索引失效: 1、表上频繁发生update,delete操作; 2、表上发生了alter table ..move操作(move操作导致了rowid变化)。
索引重建是一个争论不休被不断热烈讨论的议题。当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这...
N久以前Oracle建议我们定期重建那些高度为4,已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引。但Oracle现在强烈建议不要定期重建索引。具体可以参考文章:Oracle 重建索引的必要性。尽管如此重建...
Oracle数据库中的索引是优化查询性能的关键工具,它允许快速定位和访问数据。常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构...
在Oracle数据库中,CLOB(Character Large Object)...通过合理的索引重建和表空间管理,可以确保数据库高效运行,并减少不必要的维护成本。在实践中,应结合实际情况灵活运用各种SQL语句和存储过程,以达到最佳效果。
### Oracle索引使用样例详解 #### 一、索引并行创建 在Oracle数据库中,并行创建索引可以显著提高创建索引的速度,尤其是在处理大量数据时。下面的SQL语句展示了如何并行创建一个索引: ```sql CREATE INDEX IDX_GD...
3. 重建索引:当索引碎片严重时,可能需要重建索引来优化性能。 4. 删除索引:当索引不再被使用或者影响写操作性能时,可以考虑删除。 五、索引优化策略 1. 复合索引:如果多个列常一起出现在查询条件中,可以创建...
Oracle 在线创建索引和重组索引 Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和...
索引重建 当索引变得非常碎片化时,重建索引可以提高其性能。 **解决办法**: - 使用`ALTER INDEX ... REBUILD`命令重建索引。 - 可以考虑在线重建(`ONLINE`选项),以减少锁定时间。 #### 11. B-Tree索引中的...
### Oracle数据库索引的维护 在Oracle数据库管理与优化的过程中,索引的维护是非常关键的一环。合理地创建、管理和优化索引能够显著提高查询性能,降低系统的响应时间,从而提升整个应用程序的效率。本文将从Oracle...
1. **在线重建**:使用`ONLINE`选项可以在不影响应用程序的情况下进行索引重建,这对于生产环境中的数据库非常重要。 2. **表空间选择**:通过指定`TABLESPACE name`,可以将重建后的索引放在不同的表空间中,这有助...
提示:DBA 经常用 REBUILD 来重建索引可以减少硬盘碎片和提高应用系统的性能。Oracle8i 以后的新功能可以对索引的无用空间进行合并,它由下面命令完成:ALTER INDEX [user.]index COALESCE; 例如:ALTER INDEX ...
除了索引重建,另一个处理碎片的方法是使用`ALTER TABLESPACE COALESCE`命令。这个命令用于整理表空间,将空闲的数据块合并,以减少空间的碎片。当你发现表空间的利用率低,或者有很多小的空闲块时,可以使用此命令...
- **定期重建索引**: 随着数据量的增长,索引可能变得不那么高效,定期重建可以优化其结构。 - **监控索引使用情况**: 使用Oracle的工具如AWR报告来监控索引的使用情况,识别未被充分利用的索引并进行调整。 - **...
Oracle索引的访问方法和创建索引的知识点 Oracle索引的访问方法是一种数据库优化技术,旨在提高查询速度和数据检索效率。索引是一种数据结构,它可以快速定位和检索数据库中的数据。Oracle索引的访问方法包括创建...
3. **定期维护索引**:随着数据的不断增删改,索引可能会变得不高效,因此定期进行索引重建或优化是非常必要的。 4. **使用复合索引**:当查询条件涉及多个列时,可以考虑创建复合索引以提高查询效率。 #### 六、...