1

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

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

提前致谢 !

4

1 回答 1

1

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

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

于 2012-12-03T23:00:42.730 回答