是否需要在SQL Server 2008中为外键添加索引,或者默认情况下处理此问题。在我的许多表中,我有一个FK指向用户帐户表,大多数选择都使用此WHERE Account_FK = id
。所以索引可能是我希望的快速表现。
答案 0 :(得分:4)
通常,您希望所有JOIN
键都有索引,所以是添加索引。
如果它是复合键,请确保以适当的顺序将所有相关字段放入索引键列表中。
据我所知,在SQL Server中自动创建索引的唯一情况是当您向堆添加主键(非索引表)时 - PK被自动分配为Clustered Index Key;或者,正如Damien在下面指出的那样,当你向一个字段或一组字段添加UNIQUE
约束时。
答案 1 :(得分:3)
向FK添加索引的一个不太明显的原因是当您要删除主表(您的用户帐户表)中的行时。 SQL Server检查每个FK关系,以查看是否有任何行可以阻止删除,并且使用子表中FK列的索引检查要快得多。