2010-08-13 102 views
0

我有一张表将用户的权限映射到给定的对象。所以,它实质上是一个3个不同表的连接表。 (对象,用户和权限)SQL非聚集索引

每一行的值将永远为所有3列唯一,但不是任何2.

我需要创建一个非聚集索引。我想把索引放在对象和用户的外键上,但我想知道是否应该把它放在所有3列上。

+0

它是一个MS SQL数据库 – 2010-08-13 00:44:02

+0

取决于!哪些查询会触发这些表? – 2010-08-13 00:46:09

+1

@Mitch小麦:你知道,像*查询* ...有点sorta :) – 2010-08-13 01:04:16

回答

0

如果您有疑问,请制定您打算针对这些表执行的查询,然后运行SSMS查询调整向导。这应该有助于你开始正确的方向。

需要考虑的一件事是这三个表中的行数。如果行数很少,那么添加索引可能不值得。无论如何,表扫描可能会完成。

+0

权限表将会非常小,不会改变,但用户表将是大的,与对象表是最大的 – 2010-08-13 01:04:00

1

“每一行的值将永远为所有3列独特的”

你可能有兴趣知道,SQL Server的唯一限制是这样实现的指标。所以,如果你有(或希望)的约束备份你那独特的索赔,您已经在所有3

CREATE UNIQUE NONCLUSTERED INDEX idx_unique_perms ON UserPermissions 
(
    ObjectId ASC, 
    UserId ASC, 
    PermissionID ASC 
) 

索引如果你做一个,只记得为了你的列高选择性。