复合主键中的属性顺序 - 用于优化查询

时间:2015-12-09 13:05:00

标签: sql oracle oracle11g primary-key composite-primary-key

我理论上在Oracle11g数据库上工作,并且只有2列的特定表。其中一列是person标识符,其他列是city标识符,它们都构成primary key
但是,personID的值与cityID的值不同。

制作primary key (personID, cityID)(cityID, personID)

效率更高

1 个答案:

答案 0 :(得分:2)

没有"效率"在设置主键。我的意思是,你可以深入研究索引结构的结构,以确定值的重复是否会影响索引大小,但这将是一个非常非常非常边际的优化。

通常,问题是哪些索引最适合查询。因此,如果您更常使用whereorder bygroup by子句的其中一个字段,那么这将决定哪个是第一个。您可能会发现两列都需要非聚集索引。

注意:聚簇索引对插入不是特别有效。它们需要在旧记录附近物理定位新记录,因此插入位于前一页的中间(导致页面拆分和部分填充页面)。这是插入的额外开销,二级索引不需要。 (辅助索引也需要更新,但原始数据不需要移动。)