索引:

查询User_indexes可以获取有关用户已创建的索引的详细信息。
查询User_ind_partitions可以获取有关用户已创建的分区索引的详细信息。
查询User_ind_columns可以获取有关列(用户的索引是基于这些列创建的)的详细信息。

索引类型:唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。

索引在逻辑上物理上都独立于关联表中的数据,在任何时候都可以创建或删除索引,而不会影响基表或其它索引。

1.创建普通索引的语法:
Create INDEX index_name ON table_name(column_list) [TABLESPACE tablespace_name];

其中:
index_name 指所创建索引的名称。
table_name 表示为之创建索引的表名。
column_list 是在其上创建索引的列名列表,可以基于多列创建索引。
tablespace_name 为索引指定表空间。

示例12:演示如何在itemfile表的itemcode列上创建索引
create index item_index on itemfile(itemcode);

2.ALTER INDEX语句的REBUILD选项可以用来重建现有的索引。该选项提供的性能要优于使用DROP INDEX和CREATE INDEX语句重新创建索引。

示例13:重建索引
ALTER INDEX item_index REBUILD;

删除索引语法:Drop INDEX item_index;

(1)唯一索引:此索引可以确保在定义索引的列中,表的任意两行的值都不相同。Oracle自动为表的主键列创建唯一索引。
可以使用Create UNIQUE INDEX命令明确地创建唯一索引。

示例14:在itemfile表的itemcode列上创建了一个名为item_index的唯一索引。
Create UNIQUE INDEX item_index ON itemfile(itemcode);

(2)组合索引:组合索引是在表中的多个列上创建的索引。组合索引中列的顺序是任意的,不必是表中相邻的列。
创建组合索引时,应注意定义中使用的列的顺序。通常,最频繁访问的列应放置在列表的最前面。

示例15:在itemfile表上创建了一个名为comp_index的组合索引,当查询该表的的WHERE子句同时包含这两个列或只包含
p_category列时,以下示例语句创建的索引将用于检索数据,但如果单独使用itemrate列,则索引不能用于检索数据。
Create INDEX comp_index ON itemfile(p_category,itemrate);

(3)反向键索引:通常建立在一些值连续增长的列上,例如列中的值是是由序列产生的情况。
示例16:在itemfile表上创建了一个名为rev_index的反向键索引。注意使用REVERSE关键字。
Create INDEX rev_index ON itemfile(itemcode) REVERSE;

示例17:使用关键字NOREVERSE可以将反向键索引重建为标准索引。
ALTER INDEX rev_index REBUILD NOREVERSE;
注意:不能将标准索引重建为反向键索引。

(4)位图索引:如果某个列的值重复超过一百次,则可以考虑在该列上创建位图索引。
示例18:itemcode是order_detail表中的低基数列,因为货物编码在大多数订单中都是重复的,因此适合在该列上创建位图索引。
Create BITMAP INDEX bit_ind1 ON order_detail(itemcode);
位图索引不应当用在频繁发生的INSERT,UPDATE,DELETE操作的表上。位图索引最适合于数据仓库和决策支持系统。

(5)索引组织表:索引组织表与在一个或多个列上建立索引的普通表相似,但它无需为表和索引维护两个单独的存储空间,
数据库系统仅维护一个索引,该索引包含相应的已编码键值和与其关联的列值。
示例19:使用ORGANIZATION INDEX子句来创建索引组织表。
Create table ind_org_tab
(
vencode NUMBER(4) primary key, 注意:primary key是创建索引组织表所必需的。不允许使用分区。
venname VARCHAR2(20)
)
organization index;
索引组织表适合于通过主键来访问数据。

(6)基于函数的索引:如果在WHERE子句的算术表达式或函数中已经包含了某个列,则不会使用该列上的索引。不能在表达式包含任何
聚合函数,LOB列、REF列或包含LOB或REF的对象类型上创建基于函数的索引。

示例20:venname是vendor_master表的一个列,用于存储供应商的姓名,假定所有供应商的姓名都以混合大小写的形式存储
(如:John Smith、Dave Jones、Tony Greig等等),同时假定我们经常需要根据供应商的姓名来查询表的数据。由于
姓名是以混合大小写的形式存储的,因此可能很难给出姓名的正确大小写形式。
可以创建如下索引:
Create INDEX vn_ind ON vendor_master(UPPER(venname));

示例21:演示如何使用前面创建的基于函数的索引检索数据。
select * from vendor_master where UPPER(venname)='SMALL';

要创建基于函数或表达式的索引,必须具有QUERY REWRITE系统权限。

(7)索引中的分区:与对表进行分区类似,Oracle也允许对索引分区。牵引分区可以存储在不同的表空间中。
局部分区索引:Oracle为表的每个分区建立一个独立的索引。

示例22:先创建分区表
Create table order_mast
(
orderno number(4),
venname varchar2(20)
)
partition by range(orderno)
(
partition oe1 values less than(1000),
partition oe2 values less than(2000),
partition oe3 values less than(maxvalue)
);

接着创建局部索引:
create INDEX myind ON order_mast(orderno) LOCAL;

全局分区索引:是指在分区表或非分区表上创建的索引。

示例23:在上面创建的分区表上创建全局索引
create INDEX glb_ind ON order_mast(orderno) GLOBAL
partition by range(orderno)
(
partition ip1 values less than(1500),
partition ip2 values less than(maxvalue)
);

在有3个分区的表上创建2个分区的索引。注意:不能在散列分区或子分区建立全局索引。

全局非分区索引:全局分区索引是在分区表上创建的全局索引,它类似于非分区表上的索引,索引的结构不会被分割。

转载于:https://www.cnblogs.com/brant/p/5637885.html

oracle学习篇十二:索引相关推荐

  1. oracle中临时表文件,Oracle学习(十二)之管理临时表空间的数据文件

    管理数据文件,要求如下: 1)调整临时表空间的数据文件, 2)--文件数(临时)设置为1, 3)--文件状态(临时)为"正常", 4)--存储文件夹(临时)为"e:\or ...

  2. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  3. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

    目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...

  4. C++语言学习(十二)——C++语言常见函数调用约定

    C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...

  5. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  6. Oracle入门(十二)之SQL的DDL

    一.数据类型 Character 数据类型 Number 数据类型 Date 数据类型 Raw 和 Long Raw 数据类型 LOB 数据类型 注:Oracle数据类型详解 二.表 (1)创建表 c ...

  7. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  8. 前几帧预测 深度学习_使用深度学习从十二导联心电图预测心律失常

    上集讲到 使用深度学习 从单导联预测房颤 这一集 将继续讨论该问题 单导联心电图 对心律失常的预测作用 非常有限 因为 单导联的信号很有限 临床上需要结合 多导联心电图 判断 心律失常的类型 这一集的 ...

  9. jQuery学习(十二)—jQuery中对象的查找方法总结

    jQuery学习(十二)-jQuery中对象的查找方法总结 一.find方法 作用:在元素1中查找元素2,类似于选择器中的后代选择器 格式:元素1.find(元素2),元素2为CSS选择器或者jQue ...

  10. JavaScript学习(十二)—removeAttribute方法、hasAttribute方法、createAttribute方法以及setAttributeNode方法

    JavaScript学习(十二)-removeAttribute方法.hasAttribute方法.createAttribute方法以及setAttributeNode方法 (一).removeAt ...

最新文章

  1. Python网络爬虫之scrapy爬虫的基本使用
  2. [windows版]搭建php的redis环境
  3. 成功解决attrs = config.__dict__['__flags'] KeyError: '__flags
  4. linux下mkdir头文件_Linux部分常用命令学习记录
  5. Python安装Whl文件
  6. PHP网站如何搬迁,如何搬迁DedeCMS站点数据
  7. JAVA入门级教学之(JAVA注释)
  8. TCP 半连接队列和全连接队列满了,怎么破?
  9. 药品质量不合格统计机器人
  10. cuda-gdb 调试python中的module/cu文件
  11. VC编程读取文本数据
  12. java生成pdf合同
  13. 陶哲轩实分析 4.3 节习题试解
  14. 带你一文了解hourglass
  15. 短信跳转到微信关注公众号的方案
  16. IDEA优化配置(6)--- 炫酷的主题字体颜色设置(基于Intellij IDEA 2018)
  17. 有关在 Windows 上使用 Python 的常见问题解答
  18. 微信小程序-收藏功能
  19. Pascal中的字符串函数和数学函数
  20. PCIE-PCB设计规范!(建议收藏)

热门文章

  1. 51开发板的功能及简单使用
  2. Android访问剪贴板权限,Android 12新增剪贴板访问提醒,可调查应用获取位置数据的频率...
  3. 华为P30 HL2ELLEM VER.A手机图纸
  4. 通道布线 matlab程序,快速最优通道布线算法
  5. 机房管理制度(试行)
  6. 输入电容及DCM-CCM-QR变压器计算
  7. VBA下载文件 使用WebBrowser 及 DoFileDownload
  8. 1089. 烽火传递
  9. 翻译软件Bob安装教程
  10. 使用ASP.NET Core开发Web API入门