er.*_*tri 2 oracle indexing primary-key clustered-index
我创建了一个没有主键的新表.但该表确实有一个唯一且索引的字段.
此列具有唯一值,我可以将其设置为Primary.但是对于SQL性能会产生什么样的影响?如果它不是主要的,那么还有哪些因素会受到影响?
问候
如果列可能包含NULL值,则它不能是主键.在这种情况下,唯一的索引是您可以做的最好的(请注意,这不会阻止具有NULL值的多行).
如果它永远不会包含NULL值,那么您绝对应该NOT NULL在列上添加约束或将其作为主键.无论哪种方式,这都告诉优化器该列永远不会有NULL值,这允许它考虑某些不可能的查询优化.
我不认为(a)主键约束和(b)唯一索引和NOT NULL约束的组合之间会有任何显着的性能差异.无论哪种方式都为优化器提供了有关表内容的相同信息.两者都可以用作外键的目标.但是,有一些特定功能需要存在主键 - 例如,索引组织表必须有一个.