我有一张表将用户的权限映射到给定的对象。所以,它实质上是一个3个不同表的连接表。 (对象,用户和权限)SQL非聚集索引
每一行的值将永远为所有3列唯一,但不是任何2.
我需要创建一个非聚集索引。我想把索引放在对象和用户的外键上,但我想知道是否应该把它放在所有3列上。
我有一张表将用户的权限映射到给定的对象。所以,它实质上是一个3个不同表的连接表。 (对象,用户和权限)SQL非聚集索引
每一行的值将永远为所有3列唯一,但不是任何2.
我需要创建一个非聚集索引。我想把索引放在对象和用户的外键上,但我想知道是否应该把它放在所有3列上。
如果您有疑问,请制定您打算针对这些表执行的查询,然后运行SSMS查询调整向导。这应该有助于你开始正确的方向。
需要考虑的一件事是这三个表中的行数。如果行数很少,那么添加索引可能不值得。无论如何,表扫描可能会完成。
权限表将会非常小,不会改变,但用户表将是大的,与对象表是最大的 – 2010-08-13 01:04:00
“每一行的值将永远为所有3列独特的”
你可能有兴趣知道,SQL Server的唯一限制是这样实现的指标。所以,如果你有(或希望)的约束备份你那独特的索赔,您已经在所有3
CREATE UNIQUE NONCLUSTERED INDEX idx_unique_perms ON UserPermissions
(
ObjectId ASC,
UserId ASC,
PermissionID ASC
)
索引如果你做一个,只记得为了你的列高选择性。
它是一个MS SQL数据库 – 2010-08-13 00:44:02
取决于!哪些查询会触发这些表? – 2010-08-13 00:46:09
@Mitch小麦:你知道,像*查询* ...有点sorta :) – 2010-08-13 01:04:16