我有一張表將用戶的權限映射到給定的對象。所以,它實質上是一個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