ORACLE索引,索引的建立、修改、删除[通俗易懂]

ORACLE索引,索引的建立、修改、删除[通俗易懂]一、简介      索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关二、语法2.1创建索引CREATEINDEXCREATE[unique]INDEX[user.]indexON[user.]table(column[AS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、简介

      索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关

二、 语法

2.1 创建索引

CREATE INDEX CREATE [unique] INDEX [user.]index ON [user.]table (column [ASC | DESC] [,column [ASC | DESC] ] ... ) [CLUSTER [scheam.]cluster] [INITRANS n] [MAXTRANS n] [PCTFREE n] [STORAGE storage] [TABLESPACE tablespace] [NO SORT]

其中:
schema ORACLE模式,缺省即为当前帐户
index 索引名
table 创建索引的基表名
column 基表中的列名,一个索引最多有16列,long列、long raw 列不能建索引列
DESC、ASC 缺省为ASC即升序排序
CLUSTER 指定一个聚簇(Hash cluster不能建索引)
INITRANS、MAXTRANS 指定初始和最大事务入口数
Tablespace 表空间名
STORAGE 存储参数,同create table 中的storage.
PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)

2.1修改索引

      对于较早的Oracle版本,修改索引的主要任务是修改已存在索引的存储参数适应增长的需要或者重新建立索引。而Oracle8I及以后的版本,可以对无用的空间进行合并。这些的工作主要是由管理员来完成。

ALTER [UNIQUE] INDEX [user.]index [INITRANS n] [MAXTRANS n] REBUILD [STORAGE n]

其中:
REBUILD 是 根据原来的索引结构重新建立索引,实际是删除原来的索引后再重新建立。

提示:DBA经常用 REBUILD 来重建索引可以减少硬盘碎片和提高应用系统的性能。

2.3 删除索引

DROP INDEX [schema.]indexname

三、各类索引介绍

3.1 基于函数的索引

      基于函数的索引就是存储预先计算好的函数或表达式值的索引。这些表达式可以是算术运算表达式、SQL或PL/SQL函数、C调用等。值得注意的是,一般用户要创建函数索引,必须具有GLOBAL QUERY REWRITE和CREATE ANY INDEX权限。否则不能创建函数索引。

示例:

为EMP表的ename 列建立大写转换函数的索引idx :

CREATE INDEX idx ON emp ( UPPER(ename));

这样就可以在查询语句来使用:
SELECT * FROM EMP WHERE UPPER(ename) LIKE ‘JOH%’;

3.2 反向键索引

      反向键索引通过反向键保持索引的所有叶子键上的插入分布。有时,可用反向键索引来避免不平衡的索引。对于反向键索引可以进行下面操作:
1. 通过在ALTER INDEX命令后加REBUILD NOREVERSE或REBUILD REVERSE子句来使索引边为反向键索引或普通索引;
2. 采用范围扫描的查询不能使用反向键索引;
3. 位图索引不能反向;
4. 索引编排表不能反向。

示例1:创建一个反向键索引

CREATE INDEX i ON t (a,b,c) REVERSE;

示例2:使一个索引变为反向键索引

ALTER INDEX i REBUILD NOREVERSE

3.3 索引组织表

      与普通的索引不一样,索引组织表(Index_Organized Table)是根据表来存储数据,即将索引和表存储在一起。这样的索引结构表(Index_organized table—IOT)的特点是:对表数据的改变,如插入一新行、删除某行都引起索引的更新。
      索引组织表就象带一个或多个列所有的普通表一样,但索引组织表在B-树索引结构的叶节点上存储行数据。通过在索引结构中存储数据,索引组织表减少了总的存储量,此外,索引组织表也改善访问性能。
由于表中的行与B_树索引存放在一起,每个行都没有ROWID,而是用主键来标识。但是Oracle会“猜”这些行的位置并为每个行分配逻辑的ROWID。此外,你可以为这样的表建立第二个索引。

创建索引结构表也是用CREATE TABLE 命令加ORGANIZATION INDEX关键字来实现。但是,这样的表在创建完后,你还必须为该表建立一个主键。

例子:

CREATE TABLE IOT_EXPAMPLE ( Pk_col1 number(4), Pk_col2 varchar2(10), Non_pk_col1 varchar2(40), Non_pk_col2 date, CONSTRAINT pk_iot PRIMARY KEY( pk_col1, pk_col2) ) ORGANIZATION INDEX TABLESPACE INDEX STORAGE( INITIAL 1M NEXT 512K PCTINCREASE 0 );

索引组织表有些限制:

  1. 不能使用唯一约束;
  2. 必须具有一个主键;
  3. 不能建立簇;
  4. 不能包含LONG类型列;
  5. 不支持分布和复制。

提示:如果建立了索引组织表,则会在DBA_TABLES中的IOT_TYPE和IOT_NAME列上记录有索引组织表的信息。

四、总结

适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。

oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引

创建索引的标准语法:
CREATE INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空间名;

创建唯一索引:
CREATE unique INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空间名;

创建组合索引:
CREATE INDEX 索引名 ON 表名 (列名1,列名2)
TABLESPACE 表空间名;

创建反向键索引:
CREATE INDEX 索引名 ON 表名 (列名) reverse
TABLESPACE 表空间名;

“TABLESPACE 表空间名” 可以省略

原文地址:http://www.cnblogs.com/djcsch2001/articles/1823459.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197188.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数学建模及其基础知识详解(化学常考知识点)

    @[TOC]自动根据文章标题生成目录一、综合评价方法根据各评价方法所依据的理论基础,现代综合评价方法大致分为以下四大类:1、专家评价方法2、运筹学与其他数学方法2.1、层次分析法(AHP)2.2、模糊综合评判法(FCE)2.3、数据包络分析法(DEA)3、基于统计和经济的方法3.1、TOPSIS评价法,优化可用熵权法3.2、主次分析法和因子分析法主成分分析法通过克服相关性、重叠性,用较少的变量来代替原来较多的变量,而这种代替可以 反映原来多个变量的大部分信息,这实际上是一

    2022年4月13日
    42
  • 淘宝十年历程随笔_七十年历程

    淘宝十年历程随笔_七十年历程初创1.淘宝PV页面访问量在十几亿到二十几亿,所以即使访问淘宝首页页面服务器也有成百上千台,这过程用到的负载均衡技术LVS(LinuxVirtualServer由淘宝章文嵩博士开发)2.

    2022年8月3日
    3
  • java 登陆拦截_登录拦截 – java代码库 – 云代码

    java 登陆拦截_登录拦截 – java代码库 – 云代码[java]代码库packagecom.app.common;importorg.apache.log4j.Logger;importcom.app.model.User;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensym…

    2022年5月14日
    54
  • 说明子网和子网掩码的概念_子网与子网掩码

    说明子网和子网掩码的概念_子网与子网掩码子网掩码与子网划分 目录: 一、摘要 二、子网掩码的概念及作用 三、为什么需要使用子网掩码 四、如何用子网掩码得到网络/主机地址 五、子网掩码的分类 六、子网编址技术 七、如何划分子网及确定子网掩码 八、相关判断方法 一、摘要 近期在我的论坛中大家对子网掩码以及子网划分的讨论比较多,因为前面也写了关于ip地址的教程,为了延续性,就写了这个关于子网掩码与子网划分的教程,学这篇教…

    2025年7月21日
    0
  • 2021最新Java基础篇(后续已更新到另一篇文章)

    2021最新Java基础篇(后续已更新到另一篇文章)提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Java基础?1.1什么是变量:1.2类型的分类:1.3类型的大小:1.4类型的转换与强制类型转换:二、使用步骤1.引入库2.读入数据总结前言提示:在这里可以学到Java基础内容。一、Java基础?1.1什么是变量:变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为”变量”1.2类型的分类:1、基本数据类型变量2、引用数据类型变量

    2022年7月9日
    17
  • 英语字母s的发音规则_S汉字的发音

    英语字母s的发音规则_S汉字的发音英语发音规则S字母一、总结一句话总结:1、S 在音节开头或清辅音前/s/?2、S 在元音字母间或浊辅音前/z/?3、Sh发/ʃ/?4、Sc-发/sk/或/s

    2022年8月2日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号