Trafodion 主键与唯一索引的区别

本文深入探讨了Trafodion数据库中主键与唯一索引的区别,包括它们在底层存储、创建语法、字段空值处理、引用能力及数量限制等方面的独特特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想必大家都了解传统数据库如Oracle、MySQL中主键与唯一索引的区别,Trafodion中也有主键和唯一索引,但Trafodion中的主键与唯一索引的区别与传统数据库中不完全相同,我想这主要归根于Trafodion主键的特殊性。

首先,由于Trafodion底层是基于HBase,Trafodion在建表时会把主键映射为HBase的Row Key,因此我们可以把Trafodion表当成一个主索引,即数据在流入Trafodion表后都是基于主键字段排序存储的,而基于Trafodion上的字段单独创建的索引可以当成是二级索引(用单独的Trafodion表实现)。而在传统数据库里面,主键只是一种约束,创建主键=创建主键约束+唯一索引。

其次,从语法上,创建主键和创建唯一索引肯定是不同的,创建主键主要有两种方法:

  1. 建表时创建
create table t_ly1(a int not null, b int) primary key(a);
或
create table t_ly1(a int not null primary key, b int);
  1. 建表后创建
alter table t_ly2 add primary key(a);

而创建唯一索引的语法与创建普通索引的语法差不多,只是多了一个UNIQUE关键字:

create unique index idx_t_ly2_b on t_ly2(b);

除了以上区别,Trafodion表中的主键与索引的区别还有,

1.主键定义表按照主键字段排序存储,唯一索引为一种索引,使用单独的Trafodion实现;

3.主键通常不允许空值,即主键中的每个字段必须定义NOT NULL属性,而唯一索引中的字段可以为空;

4.主键可以被其他表引用(FK),而唯一索引不可以;

5.一个表最多只能创建一个主键,而可以创建多个唯一索引;

6.主键和索引都可以分区,当前版本中,可以基于主键所有字段或任意部分字段分区,而索引只能用SALT LIKE TABLE方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值