为SQL Server数据库中的每个外键创建索引是一种好习惯吗?
Answers:
为外键列建立索引的原因与为其他任何列建立索引的原因相同:如果要按列过滤行,则创建索引。
例如,如果您具有表[User](ID int,名称varchar(50))和表[UserAction](UserID int,Action varchar(50)),则您很可能希望能够找到特定用户的操作做到了。例如,您将运行以下查询:
select ActionName from [UserAction] where UserID = @UserID
如果您不打算按该列过滤行,则无需在其上放置索引。即使您这样做,只有拥有超过20到30行,才值得。
User
,这将导致引擎来寻找行UserAction
基础上UserID
。
来自MSDN:外键约束
由于以下原因,在外键上创建索引通常很有用: