在oracle数据库中普通索引和唯一索引,请问哪个效率更高?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle数据库中普通索引和唯一索引,请问哪个效率更高?相关的知识,希望对你有一定的参考价值。

在oracle数据库中普通索引和唯一索引,请问哪个效率更高?

索引的作用大概分为两种,一种是为了实现约束(唯一约束,主键约束),另一个作用是优化查询。
普通索引和唯一索引的作用是不同的,比较起来没有任何意义。而且还要看具体情况。
你可以指定查询语句使用的索引,比较使用不同索引情况下的执行计划。
参考技术A 唯一索引效率高,特定一个查找。

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

oracle唯一索引与普通索引的区别和联系

区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束。添加唯一索引的数据列可以为空,但是只要尊在数据值,就必须是唯一的。

联系:1)unique index就是额外添加唯一性的约束。该约束严格的保证索引列的取值是唯一的,这在一些数据列上的业务约束是很重要的功能。比如一个数据列,不能作为主键,而且允许为空,但是业务上要求唯一特性,这个时候用唯一性索引就是最好的旋转。2)性能上两者并无很大区别。

 

using index用法:

create primary key …. Using index :创建主键的时候同时将其设为索引,名称与主键名称相同。

在9i之后,在创建一个PK的时候,会自动创建一个与之对应的唯一索引。(因为某个字段如果被设置为Unique便会自动被设为索引)。如果不特别指定,这个索引的表空间和表的表空间是一样的,但是不建议将两者放在一起。

一般语句格式:

Create table test(name varchar(10));

Alter table test add primary key(name) tablespace tablespace1;

以上的处理方式有两个不好的地方,第一是无法指定索引的名称,第二无法指定索引存放的表空间。为了避免这种错误,最后按照以下方式来定义表格与表空间。

Create table test_uid(name varchar(10),

Constraint test_uid_pk primary key(name) using index (

create unique index uid_test_uid on test_uid(name) tablespace tablespace2);

当然也可以部分处理。

Create table testone (name varchar(10 char)) tablespace1;

Alter table testone add constraint pk_testine1 primary key(name) using index tablespace tablespace2;

作为一个好习惯,不要把索引和表格的数据放在同一个表空间。

一般索引单独建一个表空间。

 

---------

本系列为最近一段时间学习oracle的学习笔记,记录于此作为自身回顾,其中有的来的网络,有的来的书籍,但时间已久,记不清哪些是引用,如是转载但没标注出,特意致歉。

 

以上是关于在oracle数据库中普通索引和唯一索引,请问哪个效率更高?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle索引总结- Oracle唯一索引普通索引及约束的关系

oracle怎么把索引改成唯一索引

Oracle数据库学习_唯一性索引(Unique Index)与普通索引(Normal Index)

oracle 数据库中主键索引和唯一索引有啥区别

oracle 唯一约束 为啥 唯一索引

Oracle数据库主键约束与唯一索引有啥区别?