2008年6月26日 星期四

Index analyze and rebuild using Oracle10g

/* 建立測試table */

SQL>CREATE TABLE TBLBASE
  (
    X INTEGER,
    Y INTEGER,
    XY INTEGER
  );

/* 新增測試資料 */

SQL>insert into tblbase
  select x,y,x*y
  from (select level x from dual connect by level = 100),
  (select level y from dual connect by level <= 100);

/* 建index */

SQL>create index TBLBASE_IDX on TBLBASE(X,Y) tablespace idx;

/* 由系統tables檢示一下所建立的index */

SQL>select index_name,index_type,status from all_indexes
  where table_name = 'TBLBASE';

INDEX_NAME   INDEX_TYPE   STATUS
------------- -------------- --------------------------
TBLBASE_IDX   NORMAL     VALID

/* 由系統tables檢示一下所建立的index包含欄位 */

SQL>select INDEX_OWNER,COLUMN_NAME,COLUMN_POSITION
  from  ALL_IND_COLUMNS where INDEX_NAME = 'TBLBASE_IDX';

INDEX_OWNER  COLUMN_NAME  COLUMN_POSITION
------------- -------------- ---------------------------------
ORION     X        1
ORION     Y        2

/* 分析一下INDEX的結構 */


SQL>analyze index TBLBASE_IDX VALIDATE STRUCTURE;

已分析索引.

SQL>select height,blocks,lf_rows,lf_blks,br_rows,
   br_blks,btree_space,used_space
   from index_stats where name = 'TBLBASE_IDX';

HEIGHT BLOCKS LF_ROWS LF_BLKS BR_ROWS BR_BLKS BTREE_SPACE USED_SPACE
------ ------ -------- ------- ------- ------- ----------- -----------------
2    80   27821  68    67    1     552032     483450


/* 對TBLBASE進行DML後再分析 */

SQL> analyze index TBLBASE_IDX VALIDATE STRUCTURE;

已分析索引.

SQL>select height,blocks,lf_rows,lf_blks,br_rows,
   br_blks,btree_space,used_space
   from index_stats where name = 'TBLBASE_IDX';

HEIGHT BLOCKS LF_ROWS LF_BLKS BR_ROWS BR_BLKS BTREE_SPACE USED_SPACE
------ ------ ------- ------- ------- ------- ----------- ----------
2    80   27889  69    68    1     560032    484649

/* 對INDEX做REBUILD */

SQL> ALTER INDEX TBLBASE_IDX REBUILD;

已更改索引.

/* 對TBLBASE進行分析 */

SQL> analyze index TBLBASE_IDX VALIDATE STRUCTURE;

已分析索引.

SQL>select height,blocks,lf_rows,lf_blks,br_rows,
   br_blks,btree_space,used_space
   from index_stats where name = 'TBLBASE_IDX';

HEIGHT BLOCKS LF_ROWS LF_BLKS BR_ROWS BR_BLKS BTREE_SPACE USED_SPACE
------ ------ ------- ------- ------- ------- ----------- -------------
2    72   25106  61    60    1     496032    437230