代码之家  ›  专栏  ›  技术社区  ›  Stéphane

向具有现有聚集索引的表中添加主键

  •  5
  • Stéphane  · 技术社区  · 14 年前

    我得用数据库来做报告 数据库很大:416055104行

    只有具有唯一约束的聚集索引。

    1. 有什么好的理由吗?
    2. 有没有办法把这个变成主键。

    关于问题2

    创建一个新的主键也会创建一个要关联的非聚集索引(已有一个聚集索引)。
    我在找什么。我想保持相同的索引,但也使其成为主键。

    3 回复  |  直到 14 年前
        1
  •  2
  •   nvogel    14 年前

    主键和不可为null的列上的唯一约束之间几乎没有区别。因此,如果所讨论的列不可为null,那么我建议您什么也不做。将候选键转换为主键的主要原因是,如果您有一些软件(如数据建模工具或其他开发工具)希望用主键约束标识该键。

        2
  •  2
  •   Martin Smith    14 年前

    问得好。

    如果在不可为空的列上已有唯一索引,那么就有一个候选键。我不知道将此作为“官方”主键有什么特别的好处。事实上,我有一种感觉,不把它作为一个PK将给予更大的灵活性。

        3
  •  1
  •   GSerg    14 年前
    1. 唯一索引可以允许null

    2. 我相信您不能将现有索引“标记”为主键。你得放下它重新创造。为了避免这些东西,我会说最好放一个 TABLOCKX, HOLDLOCK 在那之前先放在桌子上。