【发布时间】:2011-10-02 18:48:00
【问题描述】:
是否需要在 SQL Server 2008 中为外键添加索引,或者这是默认处理的。在我的许多表中,我都有一个指向用户帐户表的 FK,并且大多数选择都是通过 WHERE Account_FK = id 进行的。所以我希望索引在这里可以快速获得性能胜利。
【问题讨论】:
标签: sql-server performance indexing foreign-keys
是否需要在 SQL Server 2008 中为外键添加索引,或者这是默认处理的。在我的许多表中,我都有一个指向用户帐户表的 FK,并且大多数选择都是通过 WHERE Account_FK = id 进行的。所以我希望索引在这里可以快速获得性能胜利。
【问题讨论】:
标签: sql-server performance indexing foreign-keys
通常,您希望所有 JOIN 键上都有索引,所以可以添加索引。
如果是复合键,请确保将所有相关字段按适当的顺序放入索引键列表中。
据我所知,在 SQL Server 中自动创建索引的唯一情况是您将主键添加到堆(非索引表)时 - PK 被自动分配为聚集索引键;或者,正如 Damien 在下面指出的那样,当您向一个字段或一组字段添加 UNIQUE 约束时。
【讨论】:
向 FK 添加索引的一个不太明显的原因是当您想要删除主表(您的用户帐户表)中的一行时。 SQL Server 会检查每个 FK 关系以查看是否有任何行会阻止删除,并且使用子表中 FK 列上的索引进行检查会更快。
【讨论】: