怎么进行主键local索引、unique local索引、分区索引顺序的理解

发布时间:2021-11-12 15:54:22 作者:柒染
来源:亿速云 阅读:421

本篇文章为大家展示了怎么进行主键local索引、unique local索引、分区索引顺序的理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

CREATE TABLE TEST1 (hid number,hid2 number,hchar1 char(50)) 
PARTITION BY RANGE(hid) INTERVAL (10)
( PARTITION p01 VALUES LESS THAN (5));

主键不加USING INDEX LOCAL默认是全局索引
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid)  --全局索引;
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid) USING INDEX LOCAL;

主键是非分区字段
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2)  --正常执行;
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2) USING INDEX LOCAL --报错ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集;
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2,hid) USING INDEX LOCAL  --正常执行;

unique索引是非分区字段
create unique index pk_ID on TEST1(HID2)  local--报错ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集;
create unique index pk_ID on TEST1(HID2,HID) local --正常执行;

create unique index pk_ID on TEST1(HID2) --正常执行;
alter table TEST1 add constraint pk_ID2 primary key(HID2) using index pk_ID --正常执行;

create index pk_ID99 on TEST1(HID2) local --正常执行;
alter table TEST1 add constraint pk_ID99_2 primary key(HID2) using index pk_ID99  --报错ORA-14196: 指定的索引不能用于强制约束条件;

非分区字段创建主键,则创建主键local索引时必须加上分区字段
ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (主键字段,分区字段) USING INDEX LOCAL;

主键做local索引必须包含分区键的字段。这和oracle 如何保证纪录唯一有关,如果unique index key没有partition_key,那么每插入一行的纪录,只保证它所进入的分区中是唯一的,不保证在整个表上这个记录是否唯一,这就违背了主键的意义。(如果和分区字段一起绑定,则不需要扫描所有的索引分区就能验证整个表上这个记录是否唯一)。


range分区,单个分区内非分区字段的值不是顺序的,分区字段值也不是顺序的(如按100值分区,第一个分区是1-100,顺序可能是7,1,3,67,9这样的,第二分区101-200,顺序可能是199,136,103,178这样的,但是相对两个分区而言,第二个分区和第一个分区值的范围是顺序的)
分区字段的分区索引是顺序的,因为第一个数据分区开始到后面的数据分区是range顺序的,虽然单独的数据分区内数据不是顺序的
非分区字段只是某一分区索引内的索引是顺序的,不代表分区索引是顺序的。

上述内容就是怎么进行主键local索引、unique local索引、分区索引顺序的理解,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. MySQL 主键、索引创建
  2. iOS 分组索引和索引分区

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

local unique local

上一篇:如何理解oracle索引组织表

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》