oracle唯一索引与普通索引的区别和联系
区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束。添加唯一索引的数据列可以为空,但是只要尊在数据值,就必须是唯一的。
联系:1)unique index就是额外添加唯一性的约束。该约束严格的保证索引列的取值是唯一的,这在一些数据列上的业务约束是很重要的功能。比如一个数据列,不能作为主键,而且允许为空,但是业务上要求唯一特性,这个时候用唯一性索引就是最好的旋转。2)性能上两者并无很大区别。
using index用法:
create primary key …. Using index :创建主键的时候同时将其设为索引,名称与主键名称相同。
在9i之后,在创建一个PK的时候,会自动创建一个与之对应的唯一索引。(因为某个字段如果被设置为Unique便会自动被设为索引)。如果不特别指定,这个索引的表空间和表的表空间是一样的,但是不建议将两者放在一起。
一般语句格式:
1
2
3
|
Create
table
test(
name
varchar
(10));
Alter
table
test
add
primary
key
(
name
) tablespace tablespace1;
|
以上的处理方式有两个不好的地方,第一是无法指定索引的名称,第二无法指定索引存放的表空间。为了避免这种错误,最后按照以下方式来定义表格与表空间。
1
2
3
4
5
|
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);
|
当然也可以部分处理。
1
2
3
|
Create
table
testone (
name
varchar
(10
char
)) tablespace1;
Alter
table
testone
add
constraint
pk_testine1
primary
key
(
name
) using
index
tablespace tablespace2;
|
作为一个好习惯,不要把索引和表格的数据放在同一个表空间。
一般索引单独建一个表空间。