SQL*_*ace 55
是的,这是一个很好的做法,请看这里:SQL Server什么时候停止在外键列上放置索引?向下滚动到索引外键列是否有任何好处?部分
one*_*hen 43
每个外键?不可以.在选择性较低的情况下(即许多值重复),索引可能比表扫描更昂贵.此外,在高活动环境中(比查询更多的插入/更新/删除活动)维护索引的成本可能会影响系统的整体性能.
小智 18
索引外键列的原因与索引任何其他列的原因相同:如果要按列过滤行,请创建索引.
例如,如果您有表[User](ID int,Name varchar(50))和表[UserAction](UserID int,Action varchar(50)),您很可能希望能够找到特定用户的操作没有.例如,您将运行以下查询:
select ActionName from [UserAction] where UserID = @UserID
Run Code Online (Sandbox Code Playgroud)
如果您不打算按列过滤行,则无需在其上放置索引.即使你这样做也是值得的,只要你有超过20 - 30行.
小智 5
来自MSDN:FOREIGN KEY约束
由于以下原因,在外键上创建索引通常很有用: