2010-08-13 125 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 
) 

索引如果你做一個,只記得爲了你的列高選擇性。