首页 文章

SQL Server:非null唯一与主键

提问于
浏览
3

假设我有一些表 T 带有一些非空字段 A . A 上有一个聚簇索引 . 请考虑以下两个选项:

  • 我将 A 作为主键 .

  • 我为 A 创建了一个UNIQUE约束 .

区别在哪里?我知道主键是什么,我知道w.r.t有一个概念上的区别 . 数据库理论 . 但是SQL Server的实际区别是什么? SQL Server数据库引擎的行为有何不同?在这两种情况下,表的聚簇索引都在 A 上;在这两种情况下,我都可以通过外键来引用 A .

(启发了这个问题的相关问题:Meaning of Primary Key to Microsoft SQL Server 2008

2 回答

  • 5

    没有 . 真的没什么区别 . 优化器以相同的方式处理它 . 某些圈子甚至还在争论主键本身是否真的有必要 . (虽然没有人会认为你应该为每个表定义至少一个唯一的索引/约束) .

    反对“主键”概念的一个论点可能是这样的:如果一个表上有两列,它们既是唯一的又是相同数量的数据,那就变成了PK?确实是个好问题 .

    无论如何,我总是使用PRIMARY KEY概念,因为从文档的角度来看它非常有用,它确实有助于人们理解你的意图 .

  • 3

    我从来没有得到任何真正的区别,但概念但我也想过这么多次 .

相关问题