我应该在哪个列上创建索引?

时间:2011-07-22 12:11:54

标签: sql-server tsql indexing

如何依赖此select语句创建。

SELECT 
      A.FUSERID, A.FNAME, B.FORGNAME, C.FAREA
FROM 
      TBL_USERPROFILE A 
INNER JOIN 
      V_ORGANISATION B ON A.FORG = B.FORGID 
INNER JOIN 
      V_USER_AOE C ON A.FUSERID = C.FUSERID 
INNER JOIN 
      aspnet_UsersInRoles D ON C.FUSERID = D.UserId 
INNER JOIN 
      aspnet_Roles E ON D.RoleId = E.RoleId
WHERE 
      E.RoleName = 'applicant'

这样创造是对的吗?

Create index index.B on TBL_Userprofile A (A.FUSERID, A.FNAME, B.FORGNAME, C.FAREA)

2 个答案:

答案 0 :(得分:2)

以下是包含列的建议索引列表。

A.Forg, Fuserid (INCLUDE FNAME)
B.ForgID (INCLUDE ForgName)
C.FuserID (INCLUDE FAREA)
D.UserID, RoleID
E.RoleID, RoleName

这将涵盖您的所有JOIN,结果字段为INCLUDE d,其中包含JOIN个密钥,因此无需查找 - 叶节点将包含您需要的数据。

答案 1 :(得分:0)

你可能想要这个索引:

create index index_B on aspnet_Roles(RoleName)