Oracle索引
- 什么是索引?
- 索引可以干嘛?
- 该怎么用呢?
参考链接:
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. 什么是索引?
代码语言:javascript复制通俗的来讲,索引在表中的作用,相当于书的目录对书的作用。
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会删除所有与该表相关的索引。