我有一系列有关SQL,SQL 2005中的键,索引和约束的问题。我一直在使用SQL大约4年,但我从来没有能够获得有关此主题的明确答案,并且博客文章中总是存在矛盾的信息等。我创建和使用的大多数时间表都只有一个Identity列是主键,其他表通过外键指向它。SQL 2005:键,索引和约束问题
在连接表中,我没有标识并在外键列上创建复合主键。以下是我对当前信仰的一系列陈述,这可能是错误的,如果是这样,请纠正我,以及其他问题。
所以这里有云:
据我了解一个聚集和非聚集索引的区别(不管它是唯一与否)是聚集索引会影响表中的数据的物理顺序(因此在表中只能有一个),而非聚集索引构建树数据结构。在创建索引时,为什么我应该关心“群集”与“非群集”?我应该什么时候使用其中一种?我被告知插入和删除非聚集索引很慢,因为树需要“重建”。我认为聚集索引不会以这种方式影响性能?
我看到主键实际上只是聚集索引是唯一的(他们必须被聚集?)。主键与集群唯一索引有什么特别之处?
我也见过约束,但我从来没有用过它们或真的看过它们。有人告诉我,约束的目的是为了强制数据完整性,而索引是针对性能的。我也读过约束作为索引来实现,因此它们是“相同的”。这听起来不错,对我来说。约束如何与索引不同?