Sql server 我应该在哪些列上创建索引?

Sql server 我应该在哪些列上创建索引?,sql-server,tsql,indexing,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_UsersInRo

如何创建依赖于此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)

您可能需要以下索引:

create index index_B on aspnet_Roles(RoleName)

下面是包含列的建议索引列表

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

这将覆盖所有的
JOIN
s,结果字段是带有
JOIN
键的
INCLUDE
d,因此不涉及任何查找-叶节点将具有您需要的数据。

i指的是从select语句中…使用组合多个表。如何进行索引。或者我需要为每个涉及的表逐个创建索引???请引导我…@helmi不,我想你误解了索引的用法。首先,在数据库中创建它们。然后,sql server将在任何可能的时候使用它,即当有一个查询可以从中受益时。在RoleName上建立索引可能不会有任何好处。可能只有不到10个角色名,因此索引的值中没有太多的唯一性,因此帮助不大。更有可能的是,Roles表最终只是一个表扫描。您肯定还希望表中所有外键列都有索引。我希望创建此约定的人都能将所有列(有时会错误地计算字段)都包含在内应该以
F开头的名字
现在看到了这样一个惯例的无意义…@Damien FI fdon不认为你的基金会和频率一样,fthen!