Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 为什么主键会自动创建聚集索引_Oracle_Database Design_Indexing_Primary Key_Clustered Index - Fatal编程技术网

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

Oracle 为什么主键会自动创建聚集索引,oracle,database-design,indexing,primary-key,clustered-index,Oracle,Database Design,Indexing,Primary Key,Clustered Index,当我在oracle表中创建主键时,为什么默认情况下它会创建“聚集”索引。创建主键时自动创建聚集索引的原因是什么?这样设计Oracle是Oracle设计师的偏好吗?创建索引是主键的基本功能,在SQL Server和MySQL中也是如此,聚集索引可以加快搜索速度。数据库引擎会自动创建唯一索引以强制主键约束的唯一性。如果表上不存在聚集索引或未显式指定非聚集索引,则将创建唯一的聚集索引以强制执行主键约束 请阅读以下内容: Oracle将创建一个索引,以在没有适用于预先存在的索引的情况下监督唯一约束。如果

当我在oracle表中创建主键时,为什么默认情况下它会创建“聚集”索引。创建主键时自动创建聚集索引的原因是什么?这样设计Oracle是Oracle设计师的偏好吗?

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

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

请阅读以下内容:

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

与MS-SQL Server相反,此索引不是聚集在堆表上的默认表组织,即此索引不会更改基础表结构和自然顺序。Oracle创建索引时,不会对行重新排序。索引将是一个单独的实体,每个条目都指向主表中的一行

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


Oracle也有,但它们是一个完全不同的概念。

什么是聚集索引?或者为什么这个问题会被标记为Oracle?@Ivan这是一个Microsoft SQL概念,Oracle没有聚集索引。因此,问题是不明确的:OP是否想知道为什么在添加PK时创建索引?或者为什么创建了一个不存在的“聚集”索引?这就是为什么在针对SQL Server开发应用程序时,您可以说从表中选择*,而针对Oracle,您需要按顺序从表中选择*。。。。因为当你有聚集索引PK时,它会自动为你排序。@t.s.只有当你想要按PK排序的行时,它才会自动为你排序。显然=我也不会依赖没有ORDER by子句的自然排序:如果优化器更改其访问路径/方法,会发生什么?答:您将得到无序的行,这只是聚集索引对您所做的一个示例:o