首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么主键会自动创建聚集索引

为什么主键会自动创建聚集索引
EN

Stack Overflow用户
提问于 2013-08-27 14:04:47
回答 3查看 8K关注 0票数 3

当我在oracle表中创建主键时,为什么默认情况下它要创建一个“聚集”索引。在创建主键时自动创建聚集索引的原因是什么?这仅仅是甲骨文设计者对甲骨文的偏爱,他是这样设计甲骨文的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-27 14:36:41

Oracle将创建一个索引,用于在不适合预先存在的索引的情况下管理唯一的约束。如果没有索引,每当有人试图插入或删除一行(或更新PK)时,Oracle都需要序列化操作(例如表锁)。

相反,此索引不是堆表(默认表组织)上的群集,也就是说,该索引不会改变底层表的结构和自然顺序。当Oracle创建索引时,行不会被重新排序。索引将是一个B树指数,并将作为一个单独的实体存在,其中每个条目指向主表中的一行。

Oracle没有作为MS的聚集索引,但是索引表与集群索引表共享一些属性。PK是这类表的一个组成部分,必须在创建过程中指定。

(甲骨文也有表簇,但它们是一个完全不同的概念)。

票数 17
EN

Stack Overflow用户

发布于 2013-08-27 14:07:36

创建索引是主键的基本功能,在Server和MySQL中也是如此,聚集索引使搜索速度更快。

票数 0
EN

Stack Overflow用户

发布于 2013-08-27 14:15:51

数据库引擎自动创建唯一索引,以强制执行主键约束的唯一性。如果表中不存在聚集索引,或者未显式指定非聚集索引,则将创建唯一的聚集索引以强制执行主键约束。

读这个:http://www.sqlskills.com/blogs/kimberly/the-clustered-index-debate-continues/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18467688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档