标签:
1、索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间,那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间,对索引进行结构分析:
SQL> analyze index index_name validate structure;
2、在相同的session中查询index_stats表
SQL> select height,DEL_LF_ROWS/LF_ROWS from index_stats;
当查询的height>=4(索引的深度,即从根到叶节点的高度)或DEL_LF_ROWS/LF_ROWS>0.2的情况下,就应该考虑重建该索引。
1、drop原索引,然后再创建索引
SQL> drop index index_name; SQL> create index index_name on table_name (index_column); 上述方法相当耗时间,不建议使用。
2 、直接重建索引
SQL> alter index indexname rebuild; SQL> alter index indexname rebuild online; 此方法较快,建议使用。
rebuild是快速重建索引的一种有效的办法,因为它是一种使用现有索引项来重建新索引的方法。如果重建索引时有其他用户在对这个表操作,尽量使用带online参数来最大限度的减少索引重建时将会出现的任何加锁问题。由于新旧索引在建立时同时存在,因此,使用这种重建方法需要有额外的磁盘空间可供临时使用,当索引建完后把老索引删除,如果没有成功,也不会影响原来的索引。利用这种办法可以用来将一个索引移到新的表空间。
Rebuild创建索引的内部过程:
示例一、用rebuild方式重建索引的
SQL> explain plan for alter index DBUSRPOS.PK_REPORTREG rebuild; Explained. SQL> set lines 150 SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------ Plan hash value: 1405161665 --------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------- | 0 | ALTER INDEX STATEMENT | | 41 | 246 | 1 (0)| 00:00:01 | | 1 | INDEX BUILD UNIQUE | PK_REPORTREG | | | | | | 2 | SORT CREATE INDEX | | 41 | 246 | | | | 3 | INDEX FAST FULL SCAN| PK_REPORTREG | 41 | 246 | 1 (0)| 00:00:01 | ---------------------------------------------------------------------------------------
示例二、用rebuild online方式重建索引
SQL> explain plan for alter index DBUSRPOS.PK_PRIVATEPARA rebuild online; Explained. SQL> set lines 150 SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------ Plan hash value: 3437353873 ---------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------- | 0 | ALTER INDEX STATEMENT | | 94 | 282 | 1 (0)| 00:00:01 | | 1 | INDEX BUILD UNIQUE | PK_PRIVATEPARA | | | | | | 2 | SORT CREATE INDEX | | 94 | 282 | | | | 3 | TABLE ACCESS FULL | PRIVATEPARA | 94 | 282 | 1 (0)| 00:00:01 | ----------------------------------------------------------------------------------------
重建索引过程中的注意事项:
SQL> alter index indexname rebuild partition paritionname tablespace tablespacename; SQL> alter index indexname rebuild subpartition partitioname tablespace tablespacename;
标签:
原文地址:http://www.cnblogs.com/sunmengbbm/p/5757915.html