加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle索引

发布时间:2020-12-12 16:38:23 所属栏目:百科 来源:网络整理
导读:创建索引语法: CREATE [UNIUQE | BITMAP] INDEX [schema.]index_name ON [schema.]table_name ([column_name] | [expression] [ASC | DESC], [column_name] | [expression] [ASC | DESC],...) [TABLESPACE tablespace_name] [CLUSTER scheam.cluster] [INIT

创建索引语法:

CREATE [UNIUQE | BITMAP] INDEX [schema.]index_name

ON [schema.]table_name

([column_name] | [expression] [ASC | DESC],

[column_name] | [expression] [ASC | DESC],...)

[TABLESPACE tablespace_name]

[CLUSTER scheam.cluster]

[INITRANS n]

[MAXTRANS n]

[PCTFREE n]

[STORAGE storage_settings]

[LOGGING | NOLOGGING]

[COMPUTE STATISTICS]

[NOCOMPRESS | COMPRESS nn]

[NOSORT | REVERSE]

[PARTITION | GLOBAL PARTITION partition_setting];

[UNIUQE | BITMAP]:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。

[column_name] | [expression] [ASC | DESC]:可以对多列进行联合索引,当为expression时即"基于函数的索引"。

TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)

CLUSTER:指定一个聚簇(Hash cluster不能建索引)

INITRANS、MAXTRANS、PCTFREE:(不能指定pctused),参考:http://www.52php.cn/article/p-nfhigjnf-ep.html

STORAGE:http://www.cnblogs.com/rootq/articles/1089383.html

[LOGGING | NOLOGGING]:http://www.cnblogs.com/cnjava/archive/2012/04/09/2439497.html

COMPUTE STATISTICS:创建新索引时收集统计信息

NOCOMPRESS | COMPRESS nn:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)

NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值

PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区。参考:http://www.cnblogs.com/tracy/archive/2011/05/31/2064027.html

修改索引:

ALTER [UNIQUE] INDEX [schema.]index_name

REBUILD

[STORAGE n];

修改索引的主要任务是修改已存在索引的存储参数,适应增长的需要或者重新建立索引。

REBUILD 是根据原来的索引结构重新建立索引,实际是删除原来的索引后再重新建立。用 REBUILD重建索引可以减少硬盘碎片和提高应用系统的性能。

ALTER INDEX [schema.]index_name COALESCE;

对索引的无用空间进行合并。

删除索引:

DROP INDEX [schema.]indexname;

当不需要时可以将索引删除以释放出硬盘空间。

当表结构被删除时,有其相关的所有索引也随之被删除。

函数索引:

CREATE INDEX index_name ON table_name (expression | function(column_name));

反向键索引:

CREATE INDEX index_name ON table_name (column_name) REVERSE TABLESPACE space_name;

创建唯一索引:

CREATE UNIQUE INDEX index_name ON table_name (column_name) TABLESPACE space_name;

创建组合索引:

CREATE INDEX index_name ON table_name (column_name1,column_name2) TABLESPACE space_name;

索引的优点:

1.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

2.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

3.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

4.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

索引的缺点:

1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

什么样的列可以建立索引:

1.经常出现在where子句的列;

2.主键(PK)列,唯一键(UK)列,外键(FK)列;

3.经常用于表连接的列,这些列主要是一些外键;

4.在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

5.经常需要排序(order by)和分组(group by)的列;

6.该列是高基数数据列;

7.该列包含很多null值。

什么样的列不应该建立索引:

1.对于那些在查询中很少使用或者参考的列不应该创建索引。

2.对于那些只有很少数据值的列也不应该增加索引,例如性别。(粒度很小的列)

3.对于那些定义为blob数据类型的列不应该增加索引。因为,这些列的数据量要么相当大,要么取值很少。

4.当修改性能远远大于检索性能时,不应该创建索引。因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

索引分类

物理分类:B-tree、位图索引、分区索引、非分区索引

逻辑分类:唯一性索引、非唯一性索引、单列索引、联合索引、函数索引。

各索引介绍,待补充。

http://www.52php.cn/article/p-ceeoolcz-hu.html

http://orange5458.iteye.com/blog/1165319

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读