索引的操作

1. 建立索引
SCOTT@orcl>create index emp_job_idx on emp(job);
Index created.
2. 从数据字典查询索引
SCOTT@orcl>select index_name,table_owner from user_indexes;
INDEX_NAME     TABLE_OWNER
-------------------- ------------------------------
PK_EMP     SCOTT
EMP_JOB_IDX     SCOTT
PK_DEPT     SCOTT
3. 创建索引表空间
SYS@orcl>create tablespace index_tbs datafile '/u01/app/oracle/oradata/orcl/index_tbs1.dbf' size 100M autoextend on;
Tablespace created.
4. 创建表多列索引
SCOTT@orcl>create index emp_ename_sal_idx on emp(ename,sal) tablespace index_tbs;
Index created.
5. 查看所建索引的信息
SCOTT@orcl>select index_name,index_type,table_name,table_owner,tablespace_name from user_indexes;
INDEX_NAME     INDEX_TYPE  TABLE_NAME
-------------------- -------------------- --------------------
TABLE_OWNER     TABLESPACE_NAME
-------------------- --------------------
PK_EMP     NORMAL  EMP
SCOTT     USERS
EMP_JOB_IDX     NORMAL  EMP
SCOTT     USERS
EMP_ENAME_SAL_IDX    NORMAL  EMP
SCOTT     INDEX_TBS
6. 查询与索引列相关的信息
16:08:42 SCOTT@orcl>col index_name for a20
16:08:55 SCOTT@orcl>col table_name for a20
16:09:02 SCOTT@orcl>col column_name for a30
16:09:25 SCOTT@orcl>select index_name,table_name,column_name from user_ind_columns;
INDEX_NAME     TABLE_NAME  COLUMN_NAME
-------------------- -------------------- ------------------------------
EMP_ENAME_SAL_IDX    EMP  SAL
EMP_ENAME_SAL_IDX    EMP  ENAME
EMP_JOB_IDX         EMP  JOB
PK_DEPT           DEPT  DEPTNO
PK_EMP           EMP  EMPNO
监控索引的使用
1. 启动对索引的监控
16:09:58 SCOTT@orcl>alter index EMP_ENAME_SAL_IDX monitoring usage;
Index altered.
2. 模拟进行查询
16:36:06 SCOTT@orcl>select ename from emp;
ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
ENAME
----------
JAMES
FORD
MILLER
14 rows selected.
16:36:08 SCOTT@orcl>select sal from emp;
       SAL
----------
       800
      1600
      1250
      2975
      1250
      2850
      2450
      3000
      5000
      1500
      1100
       SAL
----------
       950
      3000
      1300
14 rows selected.
16:35:07 SCOTT@orcl>SelecT * from emp;
     EMPNO ENAME      JOB       MGR HIREDATE    SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK      7902 17-DEC-80    800
20
      7499 ALLEN      SALESMAN      7698 20-FEB-81   1600        300
30
      7521 WARD       SALESMAN      7698 22-FEB-81   1250        500
30
     EMPNO ENAME      JOB       MGR HIREDATE    SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER      7839 02-APR-81   2975
20
      7654 MARTIN     SALESMAN      7698 28-SEP-81   1250       1400
30
      7698 BLAKE      MANAGER      7839 01-MAY-81   2850
30
     EMPNO ENAME      JOB       MGR HIREDATE    SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER      7839 09-JUN-81   2450
10
      7788 SCOTT      ANALYST      7566 19-APR-87   3000
20
      7839 KING       PRESIDENT   17-NOV-81   5000
10
     EMPNO ENAME      JOB       MGR HIREDATE    SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN      7698 08-SEP-81   1500 0
30
      7876 ADAMS      CLERK      7788 23-MAY-87   1100
20
      7900 JAMES      CLERK      7698 03-DEC-81    950
30
     EMPNO ENAME      JOB       MGR HIREDATE    SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST      7566 03-DEC-81   3000
20
      7934 MILLER     CLERK      7782 23-JAN-82   1300
10
14 rows selected.
3. 终止监控该索引
16:38:06 SCOTT@orcl>alter index emp_ename_sal_idx nomonitoring usage;
Index altered.
4. 通过数据字典v$object_usage查看emp_ename_sal_idx索引的使用情况
16:39:44 SCOTT@orcl>col index_name for a20
16:39:53 SCOTT@orcl>col table_name for a20
16:40:01 SCOTT@orcl>col monitoring for a20
16:40:15 SCOTT@orcl>select index_name,table_name,monitoring,used from v$object_usage;
INDEX_NAME     TABLE_NAME  MONITORING       USE
-------------------- -------------------- -------------------- ---
EMP_ENAME_SAL_IDX      EMP       NO         YES               表名为emp,现在是非监控状态,已被use
5. 查看索引的监控周期
16:53:47 SCOTT@orcl>col index_name for a20
16:53:56 SCOTT@orcl>col table_name for a20
16:53:59 SCOTT@orcl>col START_MONITORING for a10
16:54:02 SCOTT@orcl>col END_MONITORING  for a10
16:54:06 SCOTT@orcl>select index_name,table_name,START_MONITORING,END_MONITORING from v$object_usage;
INDEX_NAME     TABLE_NAME  START_MONI END_MONITO
-------------------- -------------------- ---------- ----------
EMP_ENAME_SAL_IDX    EMP  05/22/2015 05/22/2015
                    16:32:55   16:38:16
重建索引
1. 重建索引
17:02:30 SCOTT@orcl>alter index EMP_ENAME_SAL_IDX rebuild;
Index altered.
2. 重建索引并且迁移其他表空间
17:03:59 SCOTT@orcl>alter index PK_DEPT rebuild tablespace index_tbs;
Index altered.
3. 使用数据字典user_indexes验证重建索引有效性及表空间迁移变化
17:06:23 SCOTT@orcl>col index_name for a20
17:06:33 SCOTT@orcl>col table_name for a20
17:06:42 SCOTT@orcl>col tablespace_name for a20
17:07:07 SCOTT@orcl>select index_name,table_name,tablespace_name,status from user_indexes;
INDEX_NAME     TABLE_NAME  TABLESPACE_NAME      STATUS
-------------------- -------------------- -------------------- --------
PK_EMP              EMP        USERS       VALID
EMP_JOB_IDX            EMP        USERS       VALID
EMP_ENAME_SAL_IDX       EMP        INDEX_TBS     VALID
PK_DEPT              DEPT      INDEX_TBS     VALID
4. 重建索引EMP_ENAME_SAL_IDX并且修改存储参数
17:07:55 SCOTT@orcl>alter index EMP_ENAME_SAL_IDX rebuild pctfree 20 storage(next 100k);
Index altered.
5. 联机重建索引,这样的方式重建索引用户可以执行dml操作,但是不能执行ddl操作
17:13:16 SCOTT@orcl>alter index EMP_ENAME_SAL_IDX rebuild online;
Index altered.
维护索引
1. 查询当前索引的参数设置
17:37:56 SCOTT@orcl>select index_name,pct_free,pct_increase,INITIAL_EXTENT,next_extent from user_indexes;
INDEX_NAME       PCT_FREE PCT_INCREASE INITIAL_EXTENT NEXT_EXTENT
-------------------- ---------- ------------ -------------- -----------
PK_EMP              10             65536         1048576
EMP_JOB_IDX            10             65536         1048576
EMP_ENAME_SAL_IDX        20             65536         106496
PK_DEPT              10             65536         1048576
2. 通过rebuild修改索引参数
17:39:43 SCOTT@orcl>alter index PK_EMP rebuild tablespace index_tbs pctfree 20 storage(next 100k);
Index altered.
3. 查询修改后索引PK_EMP的参数
17:43:25 SCOTT@orcl>select index_name,STATUS,TABLESPACE_NAME,PCT_FREE from user_indexes;
INDEX_NAME          STATUS   TABLESPACE_NAME     PCT_FREE
-------------------- -------- -------------------- ----------
PK_EMP            VALID    INDEX_TBS          20
EMP_JOB_IDX          VALID    USERS            10
EMP_ENAME_SAL_IDX     VALID    INDEX_TBS          20
PK_DEPT            VALID    INDEX_TBS          10
4. 手动增加索引磁盘空间
17:44:06 SCOTT@orcl>alter index PK_EMP allocate extent;
Index altered.
oracle对每个默认的extent区段数为1,此时为索引PK_EMP增加一个区段,所以该索引有两个区段
5. 查询索引PK_EMP 的区段信息
17:52:07 SCOTT@orcl>select segment_name,segment_type,tablespace_name,extents from user_segments where segment_type='INDEX' and segment_name like 'PK%';
SEGMENT_NAME     SEGMENT_TYPE    TABLESPACE_NAME     EXTENTS
-------------------- --------------- -------------------- ----------
PK_DEPT     INDEX     INDEX_TBS   1
PK_EMP     INDEX     INDEX_TBS   2
6. 合并索引碎片
17:53:04 SCOTT@orcl>alter index EMP_ENAME_SAL_IDX coalesce;
Index altered. 
通过合并索引碎片,可以释放部分磁盘空间,也是维护磁盘的主要方法
删除索引
1. 删除索引EMP_ENAME_SAL_IDX
17:54:35 SCOTT@orcl>drop index EMP_ENAME_SAL_IDX;
Index dropped.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值