在外键上创建聚簇索引是一个好主意吗?

时间:2012-12-03 22:45:09

标签: asp.net-mvc sql-server-2008

我有一个登录表,其标识字段为“Id”作为主键(群集),以及其他字段,如电子邮件,密码等。我将使用此表的唯一时间是验证用户。之后我将始终查询其他表,如user_profile,user_comments等,其中有一个外键Login_id到登录表。 我的问题是,在user_profile和user_comments表中创建一个聚集索引的Login_id是个好主意吗?我将不会与Login表进行任何连接,因为在用户成功通过身份验证后,我将在FormsAuthentication.SetAuthCookie中保留LoginId,以便将来查询子表。

我正在使用C#和.Net开发一个Web应用程序。

提前致谢!

1 个答案:

答案 0 :(得分:1)

由于您将不断使用Login_id从user_profile和user_comments获取数据,并假设这些表中使用login_id进行的搜索比任何其他列(如Id)更频繁,在这些表中,则“login_id”应该是群集的索引 。基本上,您可能希望在最容易查询的列上使用聚簇索引。它可以是两列,如“名字”和姓氏。来自MSDN

  

使用尽可能少的列定义聚簇索引键很重要   尽可能。如果定义了大型聚簇索引键,则为任何   将在同一个表上定义的非聚簇索引   因为非聚集索引条目包含,所以显着更大   群集密钥。索引优化向导不会返回错误   将SQL脚本保存到可用空间不足的磁盘时。