zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle模式对象之索引

2023-06-13 09:15:17 时间

Oracle索引

  1. 什么是索引?
  2. 索引可以干嘛?
  3. 该怎么用呢?

参考链接:

Oracle索引 详解:https://blog.csdn.net/fengshuiyue/article/details/13172129

oracle中的索引----重要:https://blog.csdn.net/bibibrave/article/details/80876967

各种Oracle索引类型介绍:https://blog.csdn.net/WuLex/article/details/79394072

oracle索引,索引的建立、修改、删除:https://blog.csdn.net/daofeng1992/article/details/80523923

1. 什么是索引?

通俗的来讲,索引在表中的作用,相当于书的目录对书的作用。

2. 索引可以干嘛?

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

等。

3. 该怎么用呢?

  • 3.0首先我们先创建一个表 person(也可以叫别的名字),方便后面建立索引。

CREATE TABLE person(id NUMBER(4),name VARCHAR2(8),sex CHAR(2),birthday DATE); 
  • 3.1【创建索引】为person表中的name列创建名为name_index的索引,如下:

CREATE INDEX name_index ON person(name) TABLESPACE myspace; 

name_index : 新创建的索引名

person(name):指定索引所在的表(列)

TABLESPACE myspace:指定索引所在的表空间。

  • 3.2【创建基于函数的索引】在person表的name列上创建基于LOWER函数的索引,如下:

CREATE INDEX name_lower_index ON person(LOWER(name)) TABLESPACE myspace;
  • 3.3【重建索引】对person表中的name列上的name_index索引进行重建,如下:

ALTER INDEX name_index REBUILD INITRANS 5 MAXTRANS 10 TABLESPACE users;

INITRANS:指定初始事务入口数

MAXTRANS:最大事务入口数

  • 3.4【监视索引】
  • 3.4.1打开person表中name列上的name_index索引的监视状态,如下:

ALTER INDEX name_index MONITORING USAGE;

MONITORING:标识索引是否处于监视状态

  • 3.4.2通过数据字典v$object_usage可以查看哪些索引正在被监视,如下:

SELECT index_name,table_name,monitoring,used,start_monitoring,end_monitoring FROM v$object_usage;

index_name: 索引名称。 table_name: 索引所属的表的名称。 used: 描述监视过程中索引的使用情况。 start_monitoring 和 end_monitoring :分别描述监视的开始和结束时间。

  • 3.4.3删除指定索引

DROP INDEX name_index;

ps:在删除一个表时,Oracle会删除所有与该表相关的索引。