【发布时间】:2009-09-10 07:57:08
【问题描述】:
我有一系列关于 SQL,尤其是 SQL 2005 中的键、索引和约束的问题。我已经使用 SQL 大约 4 年了,但我从来没有能够得到关于这个主题的明确答案,而且在博客文章等上总是有相互矛盾的信息。我创建和使用的大多数时间表只有一个 Identity 列是主键,其他表通过外键指向它。
对于连接表,我没有身份,并在外键列上创建复合主键。以下是我目前的信念的一组陈述,可能是错误的,如果是,请纠正我,以及其他问题。
所以这里是:
据我了解,聚集索引和非聚集索引之间的区别(无论它是否唯一)是聚集索引会影响表中数据的物理顺序(因此表中只能有一个),而非聚集索引构建树数据结构。创建索引时,为什么我应该关心集群与非集群?我什么时候应该使用其中一种?有人告诉我,非聚集索引的插入和删除速度很慢,因为树需要“重建”。我认为聚集索引不会这样影响性能?
我看到主键实际上只是唯一的聚集索引(它们必须聚集吗?)。主键与聚集唯一索引有何特别之处?
我也见过约束,但我从未使用过它们或真正看过它们。有人告诉我,约束的目的是加强数据完整性,而索引则旨在提高性能。我还读到约束实际上是作为索引实现的,因此它们是“相同的”。这对我来说听起来不对。约束与索引有何不同?
【问题讨论】:
标签: sql-server primary-key indexing constraints clustered-index