Oracle索引

485 阅读2分钟

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战

写在前面:

  • 本文作为本人学习总结之用,同时分享给大家~
  • 个人前端博客网站:zhangqiang.hk.cn
  • 欢迎加入博主的前端学习qq交流群::706947563专注前端开发,共同学习进步

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

参考链接:

Oracle索引 详解:blog.csdn.net/fengshuiyue…

oracle中的索引----重要:blog.csdn.net/bibibrave/a…

各种Oracle索引类型介绍:blog.csdn.net/WuLex/artic…

oracle索引,索引的建立、修改、删除:blog.csdn.net/daofeng1992…

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会删除所有与该表相关的索引。


真棒,看到了末尾!   码字不易,点赞是最大的支持哦!