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

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]

关键字说明:

  • 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;

注:如果表结构被删除,则与该表相关联的索引也同时被删除。


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

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

联系方式:[email protected]

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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。