3

当我在 oracle 表中创建主键时,为什么它默认创建一个“聚集”索引。在创建主键时自动创建聚集索引的原因是什么?他以这种方式设计oracle只是Oracle设计者的偏好吗?

4

3 回答 3

17

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

与 MS-SQL Server 不同的是,该索引不聚集在堆表上(默认表组织),即该索引不会改变底层表结构和自然顺序。Oracle 创建索引时不会对行重新排序。该索引将是一个B 树索引,并将作为一个单独的实体存在,其中每个条目都指向主表中的一行。

Oracle 没有 MS SQL 那样的聚簇索引,但是索引组织表与聚簇索引表共享一些属性。PK 是此类表的组成部分,必须在创建期间指定。

(Oracle 也有表簇,但它们是完全不同的概念)。

于 2013-08-27T14:36:41.217 回答
0

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

于 2013-08-27T14:07:36.170 回答
-1

数据库引擎自动创建一个唯一索引来强制 PRIMARY KEY 约束的唯一性。如果表上不存在聚集索引或未显式指定非聚集索引,则会创建唯一的聚集索引以强制执行 PRIMARY KEY 约束。

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

于 2013-08-27T14:15:51.490 回答