Oracle之索引(Index)实例解说 - 基础

索引(Index)是关系数据库中用于存放表中每一条记录位置的一种对象。主要目的是加快数据的读取速度和数据的完整性检查。索引的建立是一项技术性要求很高的工作。

一般在数据库设计阶段就要考虑到怎样设计和创建索引。

1. 创建索引

创建索引的语法:

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

keyword说明:

  • UNIQUE: 该參数用来指明所创建的索引为唯一索引。

  • CLUSTER: 该參数为可选參数,用来指定一个聚簇(Hash cluster 不能创建索引)。
  • INITRANS, MAXTRANS: 为可选參数,指定初始和最大的事务入口数。
  • TABLESPACE: 索引的存储表空间。
  • STORAGE: 存储參数。

  • PCTFREE: 索引数据块空暇的百分比。
  • NO SORT: 不排序(存储时就依照升序进行排序,所以这里指出不再排序)。

演示样例:创建一张产品表(tb_product),为该表的product_id列创建索引,以便在使用到该列时提高查询效率。

create table tb_product
(
product_id number
, product_name varchar2(100)
, product_type varchar2(20)
, product_unit varchar2(50)
, product_unit_price number(10,4)
);

以下代码用来在product_id列上创建唯一索引:

create unique index product_id_u1 on tb_product(product_id);

2. 改动索引

索引的改动主要由数据库管理员完毕,改动索引主要涉及到改动索引的存储參数、重建索引、对没用的索引空间进行合并等。

改动索引的语法:

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

说明:

  • INITRANS n: 表示一个块内同一时候訪问的初始事务的入口数,n为十进制整数。

  • MAXTRANS  n: 表示一个块内同一时候訪问的最大事务入口数。n为十进制整数。
  • REBUILD: 表示依据原来的索引结构又一次建立索引。也就是又一次对表进行全表扫描以后创建索引数据。
  • STORAGE <storage>: 表示存储数据。

演示样例:

使用ALTER INDEX语句改动索引參数:

ALTER INDEX product_id_u1 REBUILD STORAGE  ( INITIAL 1M NEXT 512K );

使用ALTER INDEX语句改动索引为逆向索引:

ALTER INDEX product_id_u1 REBUILD REVERSE;

使用ALTER INDEX语句合并索引空间:

ALTER INDEX product_id_u1 COALESCE;

3. 删除索引

能够使用DROP语句删除索引。

DROP INDEX schema.index;

注:假设表结构被删除。则与该表相关联的索引也同一时候被删除。

---------------------------------------------------------------------------------------------------------

假设您们在尝试的过程中遇到什么问题或者我的代码有错误的地方。请给予指正,很感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处, 否则追究法律责任!

----------------------------------------------------------------------------------------------------------

Oracle之索引(Index)实例解说 - 基础的更多相关文章

  1. oracle唯一索引与普通索引的区别和联系以及using index用法

    oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...

  2. ORACLE虚拟索引(Virtual Index)

    ORACLE虚拟索引(Virtual Index)   虚拟索引概念 虚拟索引(Virtual Indexes)是一个定义在数据字典中的假索引(fake index),它没有相关的索引段.虚拟索引的目 ...

  3. Oracle索引(Index)介绍使用

    1.什么是引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据:Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引:索引由根节点.分支节点和叶子 ...

  4. Oracle 重建索引脚本

    该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...

  5. PLSQL_性能优化索引Index介绍(概念)

    2014-06-01 BaoXinjian

  6. 01 Oracle分区索引

    Oracle分区索引   索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局 ...

  7. Oracle创建索引的原则(转)

    Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问 ...

  8. Oracle数据库索引

    Oracle数据库索引 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快.索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索 ...

  9. Oracle索引梳理系列(七)- Oracle唯一索引、普通索引及约束的关系

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

随机推荐

  1. 28.Implement strStr()---kmp

    题目链接:https://leetcode.com/problems/implement-strstr/description/ 题目大意:字符串匹配,从字符串中,找到给定字符串第一次出现的位置下标, ...

  2. Selenium2+python自动化12-操作元素(键盘和鼠标事件)【转载】

    前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...

  3. ajax和json数据

    一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待     卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应, ...

  4. hdu 5083(模拟)

    Instruction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. c++类的隐藏,覆盖和重载,using关键字使用

    转载一篇文章: http://www.cnblogs.com/ustc11wj/archive/2012/08/11/2637316.html 类的隐藏和重载不一样 类的隐藏是指 一个类继承自另外一个 ...

  6. ios控件渐变色的处理

    +(CAGradientLayer *)gradientColorWithBounds:(CGRect)bounds startColorHexString:(NSString *)startColo ...

  7. Oracle高级函数

    http://www.cnblogs.com/chen1388/archive/2010/07/06/1771919.html decode函数: decode(aa, 1, 'xs', 2, 'ps ...

  8. Codeforces Round #444 (Div. 2)A. Div. 64【进制思维】

    A. Div. 64 time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  9. 基于django rest framework的mock server实践

    网上找了一下mock server的实现,发现python的基本都是基于flask来实现的,因最近在学django,就尝试用drf实现了下: A brief introduction of sui_m ...

  10. python全栈开发- day14列表推导式、生成器表达式、模块基础

    一.列表推导式 #1.示例 数据量小 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i fo ...