我有下表用于连接 3 个表:
ClientID int
BlogID int
MentionID int
假设查询总是来自 ClientID,我可以创建 1 个多列索引(ClientID、BlogID、MentionID)。
问题是,我应该将其创建为聚簇索引还是唯一键?我了解聚集索引将数据存储在其叶节点上。当然,在这种情况下,索引就是数据,所以不知道SQL Server会不会复制数据。尽管如此,我在 MSDN 上找不到任何关于使用“唯一 key ”的重要性的信息。
这与 Type = Index & IsUnique = yes 有何不同?
谁能告诉我每种方式的优点?
最佳答案
聚集索引是“表本身”,即 inode 按树状排列,其叶子节点包含行数据。聚簇索引不必声明为唯一的(尽管通常是唯一的);如果它不是唯一的,则服务器隐式地向该索引添加一个“uniqalizer”,以便每一行都被唯一标识。
其他索引将聚簇索引值存储为它们的叶节点(如果它们包含在 CREATE INDEX 状态中的 INCLUDE 子句中,则可能还有一些其他列)。
任何索引都可能被标记为唯一,因此服务器将执行额外的检查以防止重复值进入表。
关于sql-server - SQL Server 2008 中的索引与唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172974/