2010-10-05 57 views
1

我有一个问题,你能帮我吗? 我设计了一个web-cms数据库,在User table_中包含:UserID,Username,Password,FirstName,LastName,...这是我必须创建索引的最佳选择,用户名或FirstName和姓?或者他们两个? 默认情况下,UserID是用户表的聚集索引,所以下一个索引必须是非聚簇的。但我不确定UserID是否是聚簇索引。由于这是一个网站,许多用户可以每天注册或删除他们的帐户,这是在UserID上创建聚集索引的好选择吗? 我正在使用sql server 2008web-cms数据库的设计索引

+1

不确定我是否完全理解您的问题,但我很容易在用户名,密码字段组合中考虑非聚集索引,因为这些是用户登录时要查询的两个字段。 创建非聚集索引[IndexName ] ON [表名]([用户名],[密码]) 顺便说一句,您应该更改密码列的名称,因为密码是SQL中的保留字。此外,包含此列的任何查询都不会显示在Profiler中,因为您正在使用“password”这个词。 – Sage 2010-10-05 18:20:11

+0

另外,如果你不是专门查询一列(EG:“Where [ColumnName] ='Boo'”),我也不会太担心在该列上添加索引。 – Sage 2010-10-05 18:23:56

回答

1

您应该在通常按顺序请求或包含大量不同值或用于查询joion表的字段上定义聚簇索引。所以这通常意味着主键是一个很好的候选人。

非聚集索引适用于在查询的where子句中使用的字段。

确定您创建索引的字段是非常特定于您的应用程序的东西。如果你有非常关键的查询使用名字和姓氏字段,那么我会说是的,否则它可能不值得。

就删除他们账户的人而言,我相信您不打算从表中删除该行。通常你只需将这些标记为非活动状态,因为可能受此用户影响的所有其他相关表发生了什么变化?