SQL Server 2008中是否有外键索引

时间:2011-07-11 12:52:27

标签: sql-server performance indexing foreign-keys

是否需要在SQL Server 2008中为外键添加索引,或者默认情况下处理此问题。在我的许多表中,我有一个FK指向用户帐户表,大多数选择都使用此WHERE Account_FK = id。所以索引可能是我希望的快速表现。

2 个答案:

答案 0 :(得分:4)

通常,您希望所有JOIN键都有索引,所以是添加索引。

如果它是复合键,请确保以适当的顺序将所有相关字段放入索引键列表中。

据我所知,在SQL Server中自动创建索引的唯一情况是当您向堆添加主键(非索引表)时 - PK被自动分配为Clustered Index Key;或者,正如Damien在下面指出的那样,当你向一个字段或一组字段添加UNIQUE约束时。

答案 1 :(得分:3)

向FK添加索引的一个不太明显的原因是当您要删除主表(您的用户帐户表)中的行时。 SQL Server检查每个FK关系,以查看是否有任何行可以阻止删除,并且使用子表中FK列的索引检查要快得多。