我理论上在Oracle11g
数据库上工作,并且只有2列的特定表。其中一列是person
标识符,其他列是city
标识符,它们都构成primary key
。
但是,personID
的值与cityID
的值不同。
制作primary key (personID, cityID)
或(cityID, personID)
?
答案 0 :(得分:2)
没有"效率"在设置主键。我的意思是,你可以深入研究索引结构的结构,以确定值的重复是否会影响索引大小,但这将是一个非常非常非常边际的优化。
通常,问题是哪些索引最适合查询。因此,如果您更常使用where
,order by
和group by
子句的其中一个字段,那么这将决定哪个是第一个。您可能会发现两列都需要非聚集索引。
注意:聚簇索引对插入不是特别有效。它们需要在旧记录附近物理定位新记录,因此插入位于前一页的中间(导致页面拆分和部分填充页面)。这是插入的额外开销,二级索引不需要。 (辅助索引也需要更新,但原始数据不需要移动。)